mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: properly free addresses on non-serial chardev unplug
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.
This commit is contained in:
parent
f967e7a669
commit
224456fc4a
@ -4169,13 +4169,7 @@ int qemuDomainDetachChrDevice(virQEMUDriverPtr driver,
|
|||||||
|
|
||||||
rc = qemuDomainWaitForDeviceRemoval(vm);
|
rc = qemuDomainWaitForDeviceRemoval(vm);
|
||||||
if (rc == 0 || rc == 1) {
|
if (rc == 0 || rc == 1) {
|
||||||
if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI) {
|
|
||||||
qemuDomainReleaseDeviceAddress(vm, &tmpChr->info, NULL);
|
qemuDomainReleaseDeviceAddress(vm, &tmpChr->info, NULL);
|
||||||
} else if (chr->targetType == VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB) {
|
|
||||||
/* XXX */
|
|
||||||
} else {
|
|
||||||
virDomainVirtioSerialAddrRelease(priv->vioserialaddrs, &tmpChr->info);
|
|
||||||
}
|
|
||||||
ret = qemuDomainRemoveChrDevice(driver, vm, tmpChr);
|
ret = qemuDomainRemoveChrDevice(driver, vm, tmpChr);
|
||||||
} else {
|
} else {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user