From: Peter Krempa Date: Thu, 18 Nov 2021 13:58:26 +0000 (+0100) Subject: qemuDomainAttachChrDeviceAssignAddr: Simplify return value handling X-Git-Tag: v7.10.0-rc1~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9d16dea49aef81c7aa5dbb508cee47449b8f814;p=thirdparty%2Flibvirt.git qemuDomainAttachChrDeviceAssignAddr: Simplify return value handling 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 Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index d44523fe7e..5e44210aff 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -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;