linux/drivers/net/ethernet/intel
Dmitriy Vyukov 9eab46b7cb e1000: fix data race between tx_ring->next_to_clean
e1000_clean_tx_irq cleans buffers and sets tx_ring->next_to_clean,
then e1000_xmit_frame reuses the cleaned buffers. But there are no
memory barriers when buffers gets recycled, so the recycled buffers
can be corrupted.

Use smp_store_release to update tx_ring->next_to_clean and
smp_load_acquire to read tx_ring->next_to_clean to properly
hand off buffers from e1000_clean_tx_irq to e1000_xmit_frame.

The data race was found with KernelThreadSanitizer (KTSAN).

Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2015-12-12 23:09:48 -08:00
..
e1000 e1000: fix data race between tx_ring->next_to_clean 2015-12-12 23:09:48 -08:00
e1000e drivers/net/intel: use napi_complete_done() 2015-10-16 04:33:46 -07:00
fm10k fm10k: TRIVIAL cleanup order at top of fm10k_xmit_frame 2015-12-05 23:55:24 -08:00
i40e Revert "i40e: remove CONFIG_I40E_VXLAN" 2015-12-06 11:23:30 -05:00
i40evf i40e: trivial fixes 2015-12-03 02:23:39 -08:00
igb igb: add 88E1543 initialization code 2015-12-12 23:09:43 -08:00
igbvf drivers/net/intel: use napi_complete_done() 2015-10-16 04:33:46 -07:00
ixgb drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
ixgbe ixgbe: do not report 2.5 Gbps as supported 2015-12-12 02:39:02 -08:00
ixgbevf ixgbevf: Handle extended IPv6 headers in Tx path 2015-12-03 02:45:14 -08:00
e100.c e100: Release skb when DMA mapping is failed in e100_xmit_prepare 2015-08-18 14:06:05 -07:00
Kconfig Revert "i40e: remove CONFIG_I40E_VXLAN" 2015-12-06 11:23:30 -05:00
Makefile