]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_hotplug: Use more gotos in qemuDomainDetach*Device
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 23 May 2018 16:36:57 +0000 (18:36 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 28 May 2018 11:08:49 +0000 (13:08 +0200)
We are overwriting @ret a lot. It makes hard to see what is
actually going on. Use more gotos. Two functions are fixed here:
qemuDomainDetachShmemDevice() and qemuDomainDetachWatchdog().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c

index 0062e27a3ba6e56ca57b3d3de2cb63018e708da0..e84dc909b93e46dedbbbbb1bfcbd88ea5e166c87 100644 (file)
@@ -5283,19 +5283,20 @@ qemuDomainDetachShmemDevice(virQEMUDriverPtr driver,
     }
 
     qemuDomainMarkDeviceForRemoval(vm, &shmem->info);
-    qemuDomainObjEnterMonitor(driver, vm);
-
-    ret = qemuMonitorDelDevice(priv->mon, shmem->info.alias);
 
+    qemuDomainObjEnterMonitor(driver, vm);
+    if (qemuMonitorDelDevice(priv->mon, shmem->info.alias) < 0) {
+        ignore_value(qemuDomainObjExitMonitor(driver, vm));
+        goto cleanup;
+    }
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
-        ret = -1;
+        goto cleanup;
 
-    if (ret == 0) {
-        if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
-            ret = qemuDomainRemoveShmemDevice(driver, vm, shmem);
-    }
-    qemuDomainResetDeviceRemoval(vm);
+    if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
+        ret = qemuDomainRemoveShmemDevice(driver, vm, shmem);
 
+ cleanup:
+    qemuDomainResetDeviceRemoval(vm);
     return ret;
 }
 
@@ -5336,19 +5337,20 @@ qemuDomainDetachWatchdog(virQEMUDriverPtr driver,
     }
 
     qemuDomainMarkDeviceForRemoval(vm, &watchdog->info);
-    qemuDomainObjEnterMonitor(driver, vm);
-
-    ret = qemuMonitorDelDevice(priv->mon, watchdog->info.alias);
 
+    qemuDomainObjEnterMonitor(driver, vm);
+    if (qemuMonitorDelDevice(priv->mon, watchdog->info.alias) < 0) {
+        ignore_value(qemuDomainObjExitMonitor(driver, vm));
+        goto cleanup;
+    }
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
-        ret = -1;
+        goto cleanup;
 
-    if (ret == 0) {
-        if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
-            ret = qemuDomainRemoveWatchdog(driver, vm, watchdog);
-    }
-    qemuDomainResetDeviceRemoval(vm);
+    if ((ret = qemuDomainWaitForDeviceRemoval(vm)) == 1)
+        ret = qemuDomainRemoveWatchdog(driver, vm, watchdog);
 
+ cleanup:
+    qemuDomainResetDeviceRemoval(vm);
     return ret;
 }