linux_dsm_epyc7002/drivers/net/ethernet/intel/e1000
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_ethtool.c drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
e1000_hw.c e1000: make eeprom read/write scheduler friendly 2015-12-12 23:09:37 -08:00
e1000_hw.h e1000: move e1000_tbi_adjust_stats to where its used 2014-09-12 00:51:10 -07:00
e1000_main.c e1000: fix data race between tx_ring->next_to_clean 2015-12-12 23:09:48 -08:00
e1000_osdep.h
e1000_param.c e1000: fix whitespace issues and multi-line comments 2013-02-15 21:46:37 -08:00
e1000.h e1000: fix data race between tx_ring->next_to_clean 2015-12-12 23:09:48 -08:00
Makefile