David Vrabel
2013-Nov-21 15:26 UTC
[PATCHv1 net] xen-netback: stop the VIF thread before unbinding IRQs
From: David Vrabel <david.vrabel@citrix.com>
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>
---
drivers/net/xen-netback/interface.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/xen-netback/interface.c
b/drivers/net/xen-netback/interface.c
index b78ee10..2329ccc 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -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);
}
--
1.7.2.5
Wei Liu
2013-Nov-21 15:50 UTC
Re: [PATCHv1 net] xen-netback: stop the VIF thread before unbinding IRQs
On Thu, Nov 21, 2013 at 03:26:09PM +0000, David Vrabel wrote:> From: David Vrabel <david.vrabel@citrix.com> > > 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> Thanks Wei.> --- > drivers/net/xen-netback/interface.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c > index b78ee10..2329ccc 100644 > --- a/drivers/net/xen-netback/interface.c > +++ b/drivers/net/xen-netback/interface.c > @@ -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); > } > > -- > 1.7.2.5 > > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
David Miller
2013-Nov-21 18:17 UTC
Re: [PATCHv1 net] xen-netback: stop the VIF thread before unbinding IRQs
From: David Vrabel <david.vrabel@citrix.com> Date: Thu, 21 Nov 2013 15:26:09 +0000> From: David Vrabel <david.vrabel@citrix.com> > > 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>Applied.