summaryrefslogtreecommitdiff
path: root/drivers/cpuidle/sysfs.c
diff options
context:
space:
mode:
authorVincenzo Maffione <v.maffione@gmail.com>2017-09-16 18:00:00 +0200
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2017-10-26 07:42:57 -0700
commit44c445c3d1b4eacff23141fa7977c3b2ec3a45c9 (patch)
tree27f2d4565203b13f07fb9bd69615c179fed88008 /drivers/cpuidle/sysfs.c
parent78e0ea6791d7baafb8a0ca82b1bd0c7b3453c919 (diff)
downloadlinux-44c445c3d1b4eacff23141fa7977c3b2ec3a45c9.tar.gz
e1000: fix race condition between e1000_down() and e1000_watchdog
This patch fixes a race condition that can result into the interface being up and carrier on, but with transmits disabled in the hardware. The bug may show up by repeatedly IFF_DOWN+IFF_UP the interface, which allows e1000_watchdog() interleave with e1000_down(). CPU x CPU y -------------------------------------------------------------------- e1000_down(): netif_carrier_off() e1000_watchdog(): if (carrier == off) { netif_carrier_on(); enable_hw_transmit(); } disable_hw_transmit(); e1000_watchdog(): /* carrier on, do nothing */ Signed-off-by: Vincenzo Maffione <v.maffione@gmail.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/cpuidle/sysfs.c')
0 files changed, 0 insertions, 0 deletions