[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Fix uncleaned vif backend devices when frontend does not finish
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 4c961318d216119345e849e2d9c82e8fdc8857a1 # Parent 8b74b9603d5e1b8e4f2a0b970f1425b2840b17cc Fix uncleaned vif backend devices when frontend does not finish initialization properly. Signed-off-by: Murillo F. Bernardes <mfb@xxxxxxxxxx> diff -r 8b74b9603d5e -r 4c961318d216 linux-2.6-xen-sparse/drivers/xen/netback/interface.c --- a/linux-2.6-xen-sparse/drivers/xen/netback/interface.c Wed Dec 28 11:29:15 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/netback/interface.c Wed Dec 28 13:55:55 2005 @@ -247,13 +247,9 @@ { netif_t *netif = (netif_t *)arg; - /* Already disconnected? */ - if (!netif->irq) - return; - - unbind_from_irqhandler(netif->irq, netif); - netif->irq = 0; - + if (netif->irq) + unbind_from_irqhandler(netif->irq, netif); + unregister_netdev(netif->dev); if (netif->tx.sring) { @@ -290,10 +286,10 @@ #endif } -int netif_disconnect(netif_t *netif) -{ - - if (netif->status == CONNECTED) { +void netif_disconnect(netif_t *netif) +{ + switch (netif->status) { + case CONNECTED: rtnl_lock(); netif->status = DISCONNECTING; wmb(); @@ -301,10 +297,14 @@ __netif_down(netif); rtnl_unlock(); netif_put(netif); - return 0; /* Caller should not send response message. */ - } - - return 1; + break; + case DISCONNECTED: + BUG_ON(atomic_read(&netif->refcnt) != 0); + free_netif(netif); + break; + default: + BUG(); + } } /* _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |