From: Michal Privoznik Date: Mon, 26 Mar 2012 14:33:58 +0000 (+0200) Subject: qemu: Don't leak temporary list of USB devices X-Git-Tag: v0.9.12-rc1~141 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2c7b9ee0e6f2203984035668c066be37f3a256a;p=thirdparty%2Flibvirt.git qemu: Don't leak temporary list of USB devices and add debug message when adding USB device to the list of active devices. --- diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index 329e3fc054..d4d746162c 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -559,10 +559,7 @@ qemuPrepareHostdevUSBDevices(struct qemud_driver *driver, hostdev->source.subsys.u.usb.product); if (!usb) - return -1; - - hostdev->source.subsys.u.usb.bus = usbDeviceGetBus(usb); - hostdev->source.subsys.u.usb.device = usbDeviceGetDevno(usb); + goto cleanup; if ((tmp = usbDeviceListFind(driver->activeUsbHostdevs, usb))) { const char *other_name = usbDeviceGetUsedBy(tmp); @@ -579,6 +576,9 @@ qemuPrepareHostdevUSBDevices(struct qemud_driver *driver, goto cleanup; } + hostdev->source.subsys.u.usb.bus = usbDeviceGetBus(usb); + hostdev->source.subsys.u.usb.device = usbDeviceGetDevno(usb); + if (usbDeviceListAdd(list, usb) < 0) { usbFreeDevice(usb); goto cleanup; @@ -594,6 +594,9 @@ qemuPrepareHostdevUSBDevices(struct qemud_driver *driver, for (i = 0; i < usbDeviceListCount(list); i++) { tmp = usbDeviceListGet(list, i); usbDeviceSetUsedBy(tmp, name); + + VIR_DEBUG("Adding %03d.%03d dom=%s to activeUsbHostdevs", + usbDeviceGetBus(tmp), usbDeviceGetDevno(tmp), name); if (usbDeviceListAdd(driver->activeUsbHostdevs, tmp) < 0) { usbFreeDevice(tmp); goto inactivedevs;