From: Thomas Falcon Date: Fri, 12 Jun 2020 18:34:41 +0000 (-0500) Subject: ibmvnic: Flush existing work items before device removal X-Git-Tag: v5.7.6~366 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=7028ba6cfd0ae27bf172023f145115b1823ce540;p=users%2Fdwmw2%2Flinux.git ibmvnic: Flush existing work items before device removal [ Upstream commit 6954a9e4192b86d778fb52b525fd7b62d51b1147 ] Ensure that all scheduled work items have completed before continuing with device removal and after further event scheduling has been halted. This patch fixes a bug where a scheduled driver reset event is processed following device removal. Signed-off-by: Thomas Falcon Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 197dc5b2c0905..1b4d04e4474bb 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c @@ -5184,6 +5184,9 @@ static int ibmvnic_remove(struct vio_dev *dev) adapter->state = VNIC_REMOVING; spin_unlock_irqrestore(&adapter->state_lock, flags); + flush_work(&adapter->ibmvnic_reset); + flush_delayed_work(&adapter->ibmvnic_delayed_reset); + rtnl_lock(); unregister_netdevice(netdev);