]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Need to remove TLS object in RemoveRNGDevice
authorJohn Ferlan <jferlan@redhat.com>
Mon, 24 Oct 2016 19:59:11 +0000 (15:59 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 26 Oct 2016 11:04:15 +0000 (07:04 -0400)
Commit id '6e6b4bfc' added the object, but forgot the other end.

src/qemu/qemu_hotplug.c

index 30565d500217e1e1b9554c4a82bf22155427feaa..5e313e3972bf8c1232a1a06eaf4020a5d40ceb19 100644 (file)
@@ -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;
 }