From: Chen Gang Date: Tue, 16 Dec 2014 20:52:16 +0000 (+0800) Subject: hw/net/xen_nic.c: Need free 'netdev->nic' in net_free() instead of net_disconnect() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d46858377b822b820946c6b2e3a9153ee0aebd37;p=people%2Fliuw%2Fqemu.git 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 --- 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; }