diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index dfca7e2efc4cfd715dee555a5e0074b9f42684ac..51b89158a7b358062851da8e17b4cae026204a18 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2004,13 +2004,16 @@ qemuDomainDetachHostPciDevice(struct qemud_driver *driver, subsys->u.pci.slot, subsys->u.pci.function); if (pci) { activePci = pciDeviceListSteal(driver->activePciHostdevs, pci); - if (pciResetDevice(activePci, driver->activePciHostdevs, - driver->inactivePciHostdevs) == 0) + if (activePci && + pciResetDevice(activePci, driver->activePciHostdevs, + driver->inactivePciHostdevs) == 0) { qemuReattachPciDevice(activePci, driver); - else + } else { + /* reset of the device failed, treat it as if it was returned */ + pciFreeDevice(activePci); ret = -1; + } pciFreeDevice(pci); - pciFreeDevice(activePci); } else { ret = -1; }