]> Git Repo - qemu.git/commit
hw/net/stellaris_enet: Restructure tx_fifo code to avoid buffer overrun
authorPeter Maydell <[email protected]>
Tue, 13 May 2014 15:09:36 +0000 (16:09 +0100)
committerPeter Maydell <[email protected]>
Tue, 13 May 2014 15:09:36 +0000 (16:09 +0100)
commit5c10495ab1546d5d12b51a97817051e9ec98d0f6
tree10d8972d3f514c1569ab2effd2b5bc387385c5cd
parent8f1e884b38f6e947f7edd22aad1b3f0058f054da
hw/net/stellaris_enet: Restructure tx_fifo code to avoid buffer overrun

The current tx_fifo code has a corner case where the guest can overrun
the fifo buffer: if automatic CRCs are disabled we allow the guest to write
the CRC word even if there isn't actually space for it in the FIFO.
The datasheet is unclear about exactly how the hardware deals with this
situation; the most plausible answer seems to be that the CRC word is
just lost.

Implement this fix by separating the "can we stuff another word in the
FIFO" logic from the "should we transmit the packet now" check. This
also moves us closer to the real hardware, which has a number of ways
it can be configured to trigger sending the packet, some of which we
don't implement.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Cc: [email protected]
hw/net/stellaris_enet.c
This page took 0.02555 seconds and 4 git commands to generate.