From: Peter Krempa Date: Wed, 26 Apr 2017 07:57:39 +0000 (+0200) Subject: qemu: process: Don't leak priv->usbaddrs after VM restart X-Git-Tag: v3.3.0-rc1~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ab802d689796ebac6545267d5db248e13a9a0e6;p=thirdparty%2Flibvirt.git qemu: process: Don't leak priv->usbaddrs after VM restart Since the private data structure is not freed upon stopping a VM, the usbaddrs pointer would be leaked: ==15388== 136 (16 direct, 120 indirect) bytes in 1 blocks are definitely lost in loss record 893 of 1,019 ==15388== at 0x4C2CF55: calloc (vg_replace_malloc.c:711) ==15388== by 0x54BF64A: virAlloc (viralloc.c:144) ==15388== by 0x5547588: virDomainUSBAddressSetCreate (domain_addr.c:1608) ==15388== by 0x144D38A2: qemuDomainAssignUSBAddresses (qemu_domain_address.c:2458) ==15388== by 0x144D38A2: qemuDomainAssignAddresses (qemu_domain_address.c:2515) ==15388== by 0x144ED1E3: qemuProcessPrepareDomain (qemu_process.c:5398) ==15388== by 0x144F51FF: qemuProcessStart (qemu_process.c:5979) [...] --- diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b1d300e87c..1c0947588e 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6443,6 +6443,10 @@ void qemuProcessStop(virQEMUDriverPtr driver, virBitmapFree(priv->autoCpuset); priv->autoCpuset = NULL; + /* remove address data */ + virDomainUSBAddressSetFree(priv->usbaddrs); + priv->usbaddrs = NULL; + /* The "release" hook cleans up additional resources */ if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) { char *xml = qemuDomainDefFormatXML(driver, vm->def, 0);