diff options
author | David S. Miller <davem@davemloft.net> | 2016-01-15 18:36:23 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-15 18:36:23 -0500 |
commit | 7a26019fdecdb45ff784ae4e3b7e0cc9045100ca (patch) | |
tree | 511474baafa5b5c0b072e88feaa6bb405724b34f /drivers/net/xen-netback/interface.c | |
parent | 725da8dee445662beea77d3f42c3f4c79f7a7a0e (diff) | |
parent | 4e5448a31d73d0e944b7adb9049438a09bc332cb (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r-- | drivers/net/xen-netback/interface.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index e7bd63eb2876..f5231a2dd2ac 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -615,6 +615,7 @@ err_tx_unbind: queue->tx_irq = 0; err_unmap: xenvif_unmap_frontend_rings(queue); + netif_napi_del(&queue->napi); err: module_put(THIS_MODULE); return err; @@ -684,22 +685,16 @@ void xenvif_deinit_queue(struct xenvif_queue *queue) void xenvif_free(struct xenvif *vif) { - struct xenvif_queue *queue = NULL; + struct xenvif_queue *queues = vif->queues; unsigned int num_queues = vif->num_queues; unsigned int queue_index; unregister_netdev(vif->dev); - - for (queue_index = 0; queue_index < num_queues; ++queue_index) { - queue = &vif->queues[queue_index]; - xenvif_deinit_queue(queue); - } - - vfree(vif->queues); - vif->queues = NULL; - vif->num_queues = 0; - free_netdev(vif->dev); + for (queue_index = 0; queue_index < num_queues; ++queue_index) + xenvif_deinit_queue(&queues[queue_index]); + vfree(queues); + module_put(THIS_MODULE); } |