ixgbevf: handle race between close and suspend on shutdown
authorEmil Tantilov <emil.s.tantilov@intel.com>
Fri, 11 Nov 2016 18:12:51 +0000 (10:12 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 3 Jan 2017 21:03:36 +0000 (13:03 -0800)
commit2dad7b2775ea030c898fe4946971edd25af237d1
tree2e2ea994214472e794f2d1e3d17c9d6b9a609ec0
parentf7f37e7ff2b9b7eff7fbd035569cab35896869a3
ixgbevf: handle race between close and suspend on shutdown

When an interface is part of a namespace it is possible that
ixgbevf_close() may be called while ixgbevf_suspend() is running
which ends up in a double free WARN and/or a BUG in free_msi_irqs()

To handle this situation we extend the rtnl_lock() to protect the
call to netif_device_detach() and check for !netif_device_present()
to avoid entering close while in suspend.

Also added rtnl locks to ixgbevf_queue_reset_subtask().

CC: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c