]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
i40evf: cancel workqueue sync for adminq when a VF is removed
authorLihong Yang <lihong.yang@intel.com>
Tue, 28 Aug 2018 17:16:08 +0000 (10:16 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 30 Aug 2018 20:53:04 +0000 (13:53 -0700)
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>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index c7048cf484fbb753f95fba5b29bd6d164d3c295d..174d1da2857b8bbe4381824642e24e6f47a297ee 100644 (file)
@@ -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)