--- src/qemu/qemu_hotplug.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 08047ce..aec541a 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -435,6 +435,7 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, char *devstr = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; bool releaseaddr = false; + char *contstr = NULL; if (virDomainControllerFind(vm->def, controller->type, controller->idx) >= 0) { virReportError(VIR_ERR_OPERATION_FAILED, @@ -473,6 +474,13 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, goto cleanup; } + if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL && + virDomainVirtioSerialAddrSetAddController(priv->vioserialaddrs, + controller) < 0) + goto cleanup; + if (virAsprintf(&contstr, "%u", controller->idx) < 0) + goto cleanup; + if (!(devstr = qemuBuildControllerDevStr(vm->def, controller, priv->qemuCaps, NULL))) goto cleanup; } @@ -501,10 +509,13 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, } cleanup: + if (ret != 0 && contstr) + virHashRemoveEntry(priv->vioserialaddrs->used, contstr); if (ret != 0 && releaseaddr) qemuDomainReleaseDeviceAddress(vm, &controller->info, NULL); VIR_FREE(devstr); + VIR_FREE(contstr); return ret; } -- 2.0.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list