From 9034c9286e858abac01255faa9a5e2c20de0f65e Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Fri, 30 Nov 2012 16:52:03 +0100 Subject: [PATCH] qemu: Don't free PCI device if adding it to activePciHostdevs fails The device is still referenced from pcidevs and freeing it would leave an invalid pointer there. (cherry picked from commit ea1a9b5fddd1562abf31eb5c2502879bfd25903e) --- src/qemu/qemu_hostdev.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index 7375d26de1..3cfaaf5604 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -491,10 +491,8 @@ int qemuPrepareHostdevPCIDevices(struct qemud_driver *driver, /* Loop 5: Now mark all the devices as active */ for (i = 0; i < pciDeviceListCount(pcidevs); i++) { pciDevice *dev = pciDeviceListGet(pcidevs, i); - if (pciDeviceListAdd(driver->activePciHostdevs, dev) < 0) { - pciFreeDevice(dev); + if (pciDeviceListAdd(driver->activePciHostdevs, dev) < 0) goto inactivedevs; - } } /* Loop 6: Now remove the devices from inactive list. */