From: John Ferlan Date: Mon, 24 Oct 2016 19:59:11 +0000 (-0400) Subject: qemu: Need to remove TLS object in RemoveRNGDevice X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=68808516;p=libvirt.git qemu: Need to remove TLS object in RemoveRNGDevice Commit id '6e6b4bfc' added the object, but forgot the other end. --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 30565d5002..5e313e3972 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3609,6 +3609,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, virObjectEventPtr event; char *charAlias = NULL; char *objAlias = NULL; + char *tlsAlias = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; ssize_t idx; int ret = -1; @@ -3617,17 +3618,26 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, VIR_DEBUG("Removing RNG device %s from domain %p %s", rng->info.alias, vm, vm->def->name); + if (virAsprintf(&objAlias, "obj%s", rng->info.alias) < 0) goto cleanup; if (!(charAlias = qemuAliasChardevFromDevAlias(rng->info.alias))) goto cleanup; + if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && + !(tlsAlias = qemuAliasTLSObjFromChardevAlias(charAlias))) + goto cleanup; + qemuDomainObjEnterMonitor(driver, vm); + rc = qemuMonitorDelObject(priv->mon, objAlias); - if (rc == 0 && rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD) + if (rc == 0 && rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD) { ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); + if (tlsAlias) + ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias)); + } if (qemuDomainObjExitMonitor(driver, vm) < 0) goto cleanup; @@ -3649,6 +3659,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, cleanup: VIR_FREE(charAlias); VIR_FREE(objAlias); + VIR_FREE(tlsAlias); return ret; }