]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Move TCP and haveTLS checks into qemuDomainDelChardevTLSObjects
authorJohn Ferlan <jferlan@redhat.com>
Wed, 20 Dec 2017 11:36:26 +0000 (06:36 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 21 Dec 2017 15:05:31 +0000 (10:05 -0500)
Similar to qemuDomainAddChardevTLSObjects let's move the chardev
source must be TCP and it has the @haveTLS flag set checks before
trying to delete the TLS objects.

For the Chr device this represents no change; however, for RNG device
this is an additionaly check that was missed in commit id '68808516'.
Before adding the objects, TCP and haveTLS are checked.

src/qemu/qemu_hotplug.c

index 85f47bee2c73e5e4747e3617dccc4c0ffbecafdc..b7980730015382f3eed7ef7a8de1b626971d9145 100644 (file)
@@ -1565,6 +1565,7 @@ qemuDomainAddChardevTLSObjects(virConnectPtr conn,
 static int
 qemuDomainDelChardevTLSObjects(virQEMUDriverPtr driver,
                                virDomainObjPtr vm,
+                               virDomainChrSourceDefPtr dev,
                                const char *inAlias)
 {
     int ret = -1;
@@ -1573,6 +1574,12 @@ qemuDomainDelChardevTLSObjects(virQEMUDriverPtr driver,
     char *tlsAlias = NULL;
     char *secAlias = NULL;
 
+    if (dev->type != VIR_DOMAIN_CHR_TYPE_TCP ||
+        dev->data.tcp.haveTLS != VIR_TRISTATE_BOOL_YES) {
+        ret = 0;
+        goto cleanup;
+    }
+
     if (!(tlsAlias = qemuAliasTLSObjFromSrcAlias(inAlias)))
         goto cleanup;
 
@@ -4178,10 +4185,8 @@ qemuDomainRemoveChrDevice(virQEMUDriverPtr driver,
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
         goto cleanup;
 
-    if (chr->source->type == VIR_DOMAIN_CHR_TYPE_TCP &&
-        chr->source->data.tcp.haveTLS == VIR_TRISTATE_BOOL_YES &&
-        rc == 0 &&
-        qemuDomainDelChardevTLSObjects(driver, vm, charAlias) < 0)
+    if (rc == 0 &&
+        qemuDomainDelChardevTLSObjects(driver, vm, chr->source, charAlias) < 0)
         goto cleanup;
 
     virDomainAuditChardev(vm, chr, NULL, "detach", rc == 0);
@@ -4243,7 +4248,8 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver,
 
     if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD &&
         rc == 0 &&
-        qemuDomainDelChardevTLSObjects(driver, vm, charAlias) < 0)
+        qemuDomainDelChardevTLSObjects(driver, vm, rng->source.chardev,
+                                       charAlias) < 0)
         goto cleanup;
 
     virDomainAuditRNG(vm, rng, NULL, "detach", rc == 0);