From: Peter Krempa Date: Mon, 23 Jul 2018 13:38:02 +0000 (+0200) Subject: qemu: hotplug: Don't leak saved error on failure in qemuHotplugRemoveManagedPR X-Git-Tag: v4.6.0-rc1~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=986152e004c9898ad3e502816d74a92758bd9ce7;p=thirdparty%2Flibvirt.git qemu: hotplug: Don't leak saved error on failure in qemuHotplugRemoveManagedPR If we'd fail to enter or exit the monitor the saved error would be leaked. Introduced in 8498a1e2221 . Pointed out by coverity. Signed-off-by: Peter Krempa Reviewed-by: John Ferlan --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index fe703ab4bd..1488f0a7c2 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -354,22 +354,26 @@ qemuHotplugRemoveManagedPR(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virErrorPtr orig_err; - virErrorPreserveLast(&orig_err); + int ret = -1; if (!priv->prDaemonRunning || virDomainDefHasManagedPR(vm->def)) return 0; + virErrorPreserveLast(&orig_err); + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) - return -1; + goto cleanup; ignore_value(qemuMonitorDelObject(priv->mon, qemuDomainGetManagedPRAlias())); if (qemuDomainObjExitMonitor(driver, vm) < 0) - return -1; + goto cleanup; qemuProcessKillManagedPRDaemon(vm); - virErrorRestore(&orig_err); - return 0; + ret = 0; + cleanup: + virErrorRestore(&orig_err); + return ret; }