]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: properly free addresses on non-serial chardev unplug
authorJán Tomko <jtomko@redhat.com>
Tue, 30 Jun 2015 13:48:20 +0000 (15:48 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 1 Jul 2015 06:09:43 +0000 (08:09 +0200)
The target type comparison in qemuDomainDetachChrDevice
used the VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE enum, so virtio-serial
addresses were not freed properly for channel devices.

Call qemuDomainReleaseDeviceAddress uncoditionally and decide
based on the address type instead of the target/device types.

src/qemu/qemu_hotplug.c

index c7c2ea471c7c6e5fad3d1eee31097561b58b7ac2..11f983fb295f43d47fc1899e553116107e0cd825 100644 (file)
@@ -4169,13 +4169,7 @@ int qemuDomainDetachChrDevice(virQEMUDriverPtr driver,
 
     rc = qemuDomainWaitForDeviceRemoval(vm);
     if (rc == 0 || rc == 1) {
-        if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI) {
-            qemuDomainReleaseDeviceAddress(vm, &tmpChr->info, NULL);
-        } else if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB) {
-            /* XXX */
-        } else {
-            virDomainVirtioSerialAddrRelease(priv->vioserialaddrs, &tmpChr->info);
-        }
+        qemuDomainReleaseDeviceAddress(vm, &tmpChr->info, NULL);
         ret = qemuDomainRemoveChrDevice(driver, vm, tmpChr);
     } else {
         ret = 0;