From: Lihong Yang Date: Tue, 28 Aug 2018 17:16:08 +0000 (-0700) Subject: i40evf: cancel workqueue sync for adminq when a VF is removed X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=babbcc60040abfb7a9e3caa1c58fe182ae73762a;p=openwrt%2Fstaging%2Fblogic.git 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 Tested-by: Andrew Bowers Signed-off-by: Jeff Kirsher --- 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)