r8169: Fix possible ring buffer corruption on fragmented Tx packets.
authorKen Milmore <ken.milmore@gmail.com>
Tue, 21 May 2024 22:45:50 +0000 (23:45 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 23 May 2024 13:45:32 +0000 (15:45 +0200)
commitc71e3a5cffd5309d7f84444df03d5b72600cc417
treedb28cb32550f6e6f436ebb215cc495079400ff48
parent3d8597d8d7d9b3faffe0f2361032123ee6c09c02
r8169: Fix possible ring buffer corruption on fragmented Tx packets.

An issue was found on the RTL8125b when transmitting small fragmented
packets, whereby invalid entries were inserted into the transmit ring
buffer, subsequently leading to calls to dma_unmap_single() with a null
address.

This was caused by rtl8169_start_xmit() not noticing changes to nr_frags
which may occur when small packets are padded (to work around hardware
quirks) in rtl8169_tso_csum_v2().

To fix this, postpone inspecting nr_frags until after any padding has been
applied.

Fixes: 9020845fb5d6 ("r8169: improve rtl8169_start_xmit")
Cc: stable@vger.kernel.org
Signed-off-by: Ken Milmore <ken.milmore@gmail.com>
Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/27ead18b-c23d-4f49-a020-1fc482c5ac95@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/realtek/r8169_main.c