]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Take error path if acquiring of job fails in qemuDomainSaveInternal
authorPeter Krempa <pkrempa@redhat.com>
Tue, 23 Jul 2013 13:35:02 +0000 (15:35 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 23 Jul 2013 14:27:56 +0000 (16:27 +0200)
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

src/qemu/qemu_driver.c

index 0af76a521d190d3cea97cf9f40b85833deccefac..96f87cdf76b679b570ba2937e04fd744a5ca15bd 100644 (file)
@@ -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;