mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 22:50:41 +00:00
xen-netback: stop the VIF thread before unbinding IRQs
If the VIF thread is still running after unbinding the Tx and Rx IRQs in xenvif_disconnect(), the thread may attempt to raise an event which will BUG (as the irq is unbound). Signed-off-by: David Vrabel <david.vrabel@citrix.com> Acked-by: Wei Liu <wei.liu2@citrix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
aec6f90d41
commit
db739ef37f
@ -461,6 +461,9 @@ void xenvif_disconnect(struct xenvif *vif)
|
||||
if (netif_carrier_ok(vif->dev))
|
||||
xenvif_carrier_off(vif);
|
||||
|
||||
if (vif->task)
|
||||
kthread_stop(vif->task);
|
||||
|
||||
if (vif->tx_irq) {
|
||||
if (vif->tx_irq == vif->rx_irq)
|
||||
unbind_from_irqhandler(vif->tx_irq, vif);
|
||||
@ -471,9 +474,6 @@ void xenvif_disconnect(struct xenvif *vif)
|
||||
vif->tx_irq = 0;
|
||||
}
|
||||
|
||||
if (vif->task)
|
||||
kthread_stop(vif->task);
|
||||
|
||||
xenvif_unmap_frontend_rings(vif);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user