diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c index 5935d926aac0f4d308fe55aeb6421667efbbc456..7b5ccf2dafa0b9aff68d62bc3a514e423bb078ae 100644 --- a/src/util/virhostdev.c +++ b/src/util/virhostdev.c @@ -639,12 +639,12 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr mgr, if (!nhostdevs) return 0; + if (!(pcidevs = virHostdevGetPCIHostDeviceList(hostdevs, nhostdevs))) + return -1; + virObjectLock(mgr->activePCIHostdevs); virObjectLock(mgr->inactivePCIHostdevs); - if (!(pcidevs = virHostdevGetPCIHostDeviceList(hostdevs, nhostdevs))) - goto cleanup; - /* Detaching devices from the host involves several steps; each * of them is described at length below. * @@ -912,9 +912,9 @@ virHostdevPreparePCIDevices(virHostdevManagerPtr mgr, } cleanup: - virObjectUnref(pcidevs); virObjectUnlock(mgr->activePCIHostdevs); virObjectUnlock(mgr->inactivePCIHostdevs); + virObjectUnref(pcidevs); return ret; }