[libvirt] [PATCH 1/1] Cleanups for udev init code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
 src/node_device/node_device_udev.c |   34 +++++++++++++---------------------
 1 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index dcd889d..6895ac5 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1368,8 +1368,9 @@ static int udevDeviceMonitorShutdown(void)

         priv = driverState->privateData;

-        if (priv->watch != -1)
+        if (priv->watch != -1) {
             virEventRemoveHandle(priv->watch);
+        }

         udev_monitor = DRV_STATE_UDEV_MONITOR(driverState);

@@ -1387,6 +1388,7 @@ static int udevDeviceMonitorShutdown(void)
         virMutexDestroy(&driverState->lock);
         VIR_FREE(driverState);
         VIR_FREE(priv);
+
     } else {
         ret = -1;
     }
@@ -1547,28 +1549,22 @@ static int udevDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED)
 {
     udevPrivate *priv = NULL;
     struct udev *udev = NULL;
-    int ret = 0;
+    int ret = -1;

-    if (VIR_ALLOC(priv) < 0) {
+    if (VIR_ALLOC(driverState) < 0) {
         virReportOOMError(NULL);
-        ret = -1;
         goto out;
     }

-    priv->watch = -1;
-
-    if (VIR_ALLOC(driverState) < 0) {
+    if (VIR_ALLOC(priv) < 0) {
         virReportOOMError(NULL);
-        VIR_FREE(priv);
-        ret = -1;
         goto out;
     }

+    priv->watch = -1;
+
     if (virMutexInit(&driverState->lock) < 0) {
         VIR_ERROR0("Failed to initialize mutex for driverState");
-        VIR_FREE(priv);
-        VIR_FREE(driverState);
-        ret = -1;
         goto out;
     }

@@ -1585,10 +1581,8 @@ static int udevDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED)

     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;
     }

@@ -1608,27 +1602,25 @@ static int udevDeviceMonitorStartup(int privileged ATTRIBUTE_UNUSED)
     priv->watch = virEventAddHandle(udev_monitor_get_fd(priv->udev_monitor),
                                     VIR_EVENT_HANDLE_READABLE,
                                     udevEventHandleCallback, NULL, NULL);
+
+    nodeDeviceUnlock(driverState);
+
     if (priv->watch == -1) {
-        nodeDeviceUnlock(driverState);
-        ret = -1;
         goto out;
     }

-    nodeDeviceUnlock(driverState);
-
     /* Create a fictional 'computer' device to root the device tree. */
     if (udevSetupSystemDev() != 0) {
-        ret = -1;
         goto out;
     }

     /* Populate with known devices */
-
     if (udevEnumerateDevices(udev) != 0) {
-        ret = -1;
         goto out;
     }

+    ret = 0;
+
 out:
     if (ret == -1) {
         udevDeviceMonitorShutdown();
-- 
1.6.5.5

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]