if (!driver)
return -1;
- nodeDeviceLock();
-
virObjectUnref(driver->privateData);
virObjectUnref(driver->nodeDeviceEventState);
virNodeDeviceObjListFree(driver->devs);
- nodeDeviceUnlock();
virMutexDestroy(&driver->lock);
VIR_FREE(driver);
return -1;
}
- nodeDeviceLock();
-
if (!(driver->devs = virNodeDeviceObjListNew()) ||
!(priv = udevEventDataNew()))
- goto unlock;
+ goto cleanup;
driver->privateData = priv;
driver->nodeDeviceEventState = virObjectEventStateNew();
if (udevPCITranslateInit(privileged) < 0)
- goto unlock;
+ goto cleanup;
udev = udev_new();
if (!udev) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to create udev context"));
- goto unlock;
+ goto cleanup;
}
#if HAVE_UDEV_LOGGING
/* cast to get rid of missing-format-attribute warning */
goto unlock;
virObjectUnlock(priv);
- nodeDeviceUnlock();
/* Populate with known devices */
if (udevEnumerateDevices(udev) != 0)
return -1;
unlock:
- if (priv)
- virObjectUnlock(priv);
- nodeDeviceUnlock();
+ virObjectUnlock(priv);
goto cleanup;
}