int ret = 0;
name = udev_device_get_syspath(device);
- nodeDeviceLock(driverState);
dev = virNodeDeviceFindBySysfsPath(&driverState->devs, name);
if (dev != NULL) {
name);
ret = -1;
}
- nodeDeviceUnlock(driverState);
return ret;
}
/* If this is a device change, the old definition will be freed
* and the current definition will take its place. */
- nodeDeviceLock(driverState);
dev = virNodeDeviceAssignDef(&driverState->devs, def);
- nodeDeviceUnlock(driverState);
if (dev == NULL) {
VIR_ERROR(_("Failed to create device for '%s'"), def->name);
const char *action = NULL;
int udev_fd = -1;
+ nodeDeviceLock(driverState);
udev_fd = udev_monitor_get_fd(udev_monitor);
if (fd != udev_fd) {
VIR_ERROR(_("File descriptor returned by udev %d does not "
out:
udev_device_unref(device);
+ nodeDeviceUnlock(driverState);
return;
}
priv->udev_monitor = udev_monitor_new_from_netlink(udev, "udev");
if (priv->udev_monitor == NULL) {
VIR_FREE(priv);
- nodeDeviceUnlock(driverState);
VIR_ERROR0(_("udev_monitor_new_from_netlink returned NULL"));
ret = -1;
- goto out;
+ goto out_unlock;
}
udev_monitor_enable_receiving(priv->udev_monitor);
VIR_EVENT_HANDLE_READABLE,
udevEventHandleCallback, NULL, NULL);
if (priv->watch == -1) {
- nodeDeviceUnlock(driverState);
ret = -1;
- goto out;
+ goto out_unlock;
}
- nodeDeviceUnlock(driverState);
-
/* Create a fictional 'computer' device to root the device tree. */
if (udevSetupSystemDev() != 0) {
ret = -1;
- goto out;
+ goto out_unlock;
}
/* Populate with known devices */
if (udevEnumerateDevices(udev) != 0) {
ret = -1;
- goto out;
+ goto out_unlock;
}
+out_unlock:
+ nodeDeviceUnlock(driverState);
+
out:
if (ret == -1) {
udevDeviceMonitorShutdown();