From d46858377b822b820946c6b2e3a9153ee0aebd37 Mon Sep 17 00:00:00 2001 From: Chen Gang Date: Wed, 17 Dec 2014 04:52:16 +0800 Subject: [PATCH] hw/net/xen_nic.c: Need free 'netdev->nic' in net_free() instead of net_disconnect() net_init() and net_free() are pairs, net_connect() and net_disconnect() are pairs. net_init() creates 'netdev->nic', so also need free it in net_free(). Signed-off-by: Chen Gang Signed-off-by: Stefan Hajnoczi --- hw/net/xen_nic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c index 7a57feb29b..8eaa77b62d 100644 --- a/hw/net/xen_nic.c +++ b/hw/net/xen_nic.c @@ -410,10 +410,6 @@ static void net_disconnect(struct XenDevice *xendev) xc_gnttab_munmap(netdev->xendev.gnttabdev, netdev->rxs, 1); netdev->rxs = NULL; } - if (netdev->nic) { - qemu_del_nic(netdev->nic); - netdev->nic = NULL; - } } static void net_event(struct XenDevice *xendev) @@ -427,6 +423,10 @@ static int net_free(struct XenDevice *xendev) { struct XenNetDev *netdev = container_of(xendev, struct XenNetDev, xendev); + if (netdev->nic) { + qemu_del_nic(netdev->nic); + netdev->nic = NULL; + } g_free(netdev->mac); return 0; }