From: Peter Krempa Date: Tue, 23 Jul 2013 13:35:02 +0000 (+0200) Subject: qemu: Take error path if acquiring of job fails in qemuDomainSaveInternal X-Git-Tag: v1.1.1-rc1~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29c2208c045e16f55bbfd25db266c30e90fa3535;p=thirdparty%2Flibvirt.git qemu: Take error path if acquiring of job fails in qemuDomainSaveInternal Due to a goto statement missed when refactoring in 2771f8b74c1bf50d1fa when acquiring of a domain job failed the error path was not taken. This resulted into a crash afterwards as an extra reference was removed from a domain object leading to it being freed. An attempt to list the domains leaded to a crash of the daemon afterwards. https://bugzilla.redhat.com/show_bug.cgi?id=928672 --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0af76a521d..96f87cdf76 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2987,8 +2987,8 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom, if (!qemuMigrationIsAllowed(driver, vm, vm->def, false, false)) goto cleanup; - if (qemuDomainObjBeginAsyncJob(driver, vm, - QEMU_ASYNC_JOB_SAVE) < 0) + if (qemuDomainObjBeginAsyncJob(driver, vm, QEMU_ASYNC_JOB_SAVE) < 0) + goto cleanup; memset(&priv->job.info, 0, sizeof(priv->job.info)); priv->job.info.type = VIR_DOMAIN_JOB_UNBOUNDED;