From ee46360b43423bc954efb8d1e4a35cdf2dc7aefb Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 13 Jul 2018 12:54:26 +0200 Subject: [PATCH] qemu: hotplug: Don't leak 'disk' if VM crashes during unplug finishing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qemuDomainRemoveDiskDevice would leak the disk to be removed if the VM crashed since it was removed from the definition but not freed. Broken in commit 105bcdde76b which moved the removal from the definition earlier. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/qemu/qemu_hotplug.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 5ba72e792e..f91055cfbf 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3864,6 +3864,7 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver, bool prUsed = false; const char *authAlias = NULL; const char *encAlias = NULL; + int ret = -1; VIR_DEBUG("Removing disk %s from domain %p %s", disk->info.alias, vm, vm->def->name); @@ -3918,7 +3919,7 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver, ignore_value(qemuMonitorDelObject(priv->mon, qemuDomainGetManagedPRAlias())); if (qemuDomainObjExitMonitor(driver, vm) < 0) - return -1; + goto cleanup; virDomainAuditDisk(vm, disk->src, NULL, "detach", true); @@ -3938,8 +3939,11 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver, ignore_value(qemuRemoveSharedDevice(driver, &dev, vm->def->name)); virDomainUSBAddressRelease(priv->usbaddrs, &disk->info); + ret = 0; + + cleanup: virDomainDiskDefFree(disk); - return 0; + return ret; } -- GitLab