summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLihong Yang <lihong.yang@intel.com>2018-08-28 20:16:08 +0300
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2018-08-30 23:53:04 +0300
commitbabbcc60040abfb7a9e3caa1c58fe182ae73762a (patch)
tree8f180fce33c7565d5f2a74c7c91e3dcaa5c93d5d
parent5cba17b14182696d6bb0ec83a1d087933f252241 (diff)
downloadlinux-babbcc60040abfb7a9e3caa1c58fe182ae73762a.tar.xz
i40evf: cancel workqueue sync for adminq when a VF is removed
If a VF is being removed, there is no need to continue with the workqueue sync for the adminq task, thus cancel it. Without this call, when VFs are created and removed right away, there might be a chance for the driver to crash with events stuck in the adminq. Signed-off-by: Lihong Yang <lihong.yang@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40evf_main.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index c7048cf484fb..174d1da2857b 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -3910,6 +3910,8 @@ static void i40evf_remove(struct pci_dev *pdev)
if (adapter->watchdog_timer.function)
del_timer_sync(&adapter->watchdog_timer);
+ cancel_work_sync(&adapter->adminq_task);
+
i40evf_free_rss(adapter);
if (hw->aq.asq.count)