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 ea1a9b5fdd)
This commit is contained in:
Jiri Denemark 2012-11-30 16:52:03 +01:00 committed by Cole Robinson
parent 6187407154
commit 9034c9286e

View File

@ -491,10 +491,8 @@ int qemuPrepareHostdevPCIDevices(struct qemud_driver *driver,
/* Loop 5: Now mark all the devices as active */ /* Loop 5: Now mark all the devices as active */
for (i = 0; i < pciDeviceListCount(pcidevs); i++) { for (i = 0; i < pciDeviceListCount(pcidevs); i++) {
pciDevice *dev = pciDeviceListGet(pcidevs, i); pciDevice *dev = pciDeviceListGet(pcidevs, i);
if (pciDeviceListAdd(driver->activePciHostdevs, dev) < 0) { if (pciDeviceListAdd(driver->activePciHostdevs, dev) < 0)
pciFreeDevice(dev);
goto inactivedevs; goto inactivedevs;
}
} }
/* Loop 6: Now remove the devices from inactive list. */ /* Loop 6: Now remove the devices from inactive list. */