]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainAttachChrDeviceAssignAddr: Simplify return value handling
authorPeter Krempa <pkrempa@redhat.com>
Thu, 18 Nov 2021 13:58:26 +0000 (14:58 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 19 Nov 2021 11:38:34 +0000 (12:38 +0100)
Rather than returning a different error code if the device address needs
to be released pass in the 'need_release' flag via a pointer.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c

index d44523fe7ec32a867bb67594aa3d6a6429a4ee94..5e44210affddfbe74496c541283e7892f031c734 100644 (file)
@@ -2125,13 +2125,12 @@ qemuDomainChrRemove(virDomainDef *vmdef,
     return ret;
 }
 
-/* Returns  1 if the address will need to be released later,
- *         -1 on error
- *          0 otherwise
- */
+
+
 static int
 qemuDomainAttachChrDeviceAssignAddr(virDomainObj *vm,
-                                    virDomainChrDef *chr)
+                                    virDomainChrDef *chr,
+                                    bool *need_release)
 {
     virDomainDef *def = vm->def;
     qemuDomainObjPrivate *priv = vm->privateData;
@@ -2147,13 +2146,16 @@ qemuDomainAttachChrDeviceAssignAddr(virDomainObj *vm,
                chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI) {
         if (qemuDomainEnsurePCIAddress(vm, &dev) < 0)
             return -1;
-        return 1;
 
+        *need_release = true;
+        return 0;
     } else if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL &&
                chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB) {
         if (virDomainUSBAddressEnsure(priv->usbaddrs, &chr->info) < 0)
             return -1;
-        return 1;
+
+        *need_release = true;
+        return 0;
 
     } else if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
                chr->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO) {
@@ -2176,7 +2178,7 @@ int qemuDomainAttachChrDevice(virQEMUDriver *driver,
                               virDomainObj *vm,
                               virDomainChrDef *chr)
 {
-    int ret = -1, rc;
+    int ret = -1;
     qemuDomainObjPrivate *priv = vm->privateData;
     virErrorPtr orig_err;
     virDomainDef *vmdef = vm->def;
@@ -2203,10 +2205,8 @@ int qemuDomainAttachChrDevice(virQEMUDriver *driver,
     if (qemuAssignDeviceChrAlias(vmdef, chr, -1) < 0)
         goto cleanup;
 
-    if ((rc = qemuDomainAttachChrDeviceAssignAddr(vm, chr)) < 0)
+    if (qemuDomainAttachChrDeviceAssignAddr(vm, chr, &need_release) < 0)
         goto cleanup;
-    if (rc == 1)
-        need_release = true;
 
     if (qemuDomainNamespaceSetupChardev(vm, chr, &teardowndevice) < 0)
         goto cleanup;