diff options
author | Don Skidmore <[email protected]> | 2012-03-17 05:51:52 +0000 |
---|---|---|
committer | Jeff Kirsher <[email protected]> | 2012-05-03 03:02:43 -0700 |
commit | ab6039a70bb559b2fb5f363934da67d864ccda2a (patch) | |
tree | 4d5530f6cd86d1f255691add0d1be18a44a20f72 | |
parent | 5a8887d39e1ba5ee2d4ccb94b14d6f2dce5ddfca (diff) |
ixgbe: fix race condition with shutdown
It was possible for shutdown to pull the rug out from other driver entry
points. Now we just grab the rtnl lock before taking everything apart.
Thanks to Hariharan for noticing this tight race condition.
Signed-off-by: Don Skidmore <[email protected]>
Cc: Hariharan Nagarajan <[email protected]>
Tested-by: Phil Schmitt <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 88f6b2e9b72d..d9dbf871abb8 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -4866,10 +4866,12 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake) netif_device_detach(netdev); if (netif_running(netdev)) { + rtnl_lock(); ixgbe_down(adapter); ixgbe_free_irq(adapter); ixgbe_free_all_tx_resources(adapter); ixgbe_free_all_rx_resources(adapter); + rtnl_unlock(); } ixgbe_clear_interrupt_scheme(adapter); |