[libvirt] [PATCH 2/3] qemu: hotplug: Fix double free on USB collision
Jiri Denemark
jdenemar at redhat.com
Mon Dec 9 12:11:46 UTC 2013
On Thu, Dec 05, 2013 at 15:40:27 -0500, Cole Robinson wrote:
> If we hit a collision, we free the USB device while it is still part
> of our temporary USBDeviceList. When the list is unref'd, the device
> is free'd again.
>
> Make the initial device freeing dependent on whether it is present
> in the temporary list or not.
> ---
> src/qemu/qemu_hotplug.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index bff9e23..b7512a7 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -1518,7 +1518,10 @@ cleanup:
> }
> if (added)
> virUSBDeviceListSteal(driver->activeUsbHostdevs, usb);
> - virUSBDeviceFree(usb);
> + if (list && usb &&
> + !virUSBDeviceListFind(list, usb) &&
> + !virUSBDeviceListFind(driver->activeUsbHostdevs, usb))
> + virUSBDeviceFree(usb);
> virObjectUnref(list);
> VIR_FREE(devstr);
> return ret;
ACK
Jirka
More information about the libvir-list
mailing list