]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: domainjob: Allow InitJob if cb is not set in qemuDomainObjInitJob()
authorKristina Hanicova <khanicov@redhat.com>
Wed, 16 Mar 2022 14:08:39 +0000 (15:08 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 16 Mar 2022 15:27:19 +0000 (16:27 +0100)
This allows init job even if cb structure is not set. This patch
also includes slight rewriting of the function to make it look
cleaner when freeing resources, by allocating privateData at the
end.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_domainjob.c

index 7b81cd8a2b006def5835d22a91493550c7173616..28c09ae1797ff18cfbc6db3b778342fc569643b0 100644 (file)
@@ -189,17 +189,18 @@ qemuDomainObjInitJob(qemuDomainJobObj *job,
     memset(job, 0, sizeof(*job));
     job->cb = cb;
 
-    if (!(job->privateData = job->cb->allocJobPrivate()))
+    if (virCondInit(&job->cond) < 0)
         return -1;
 
-    if (virCondInit(&job->cond) < 0) {
-        job->cb->freeJobPrivate(job->privateData);
+    if (virCondInit(&job->asyncCond) < 0) {
+        virCondDestroy(&job->cond);
         return -1;
     }
 
-    if (virCondInit(&job->asyncCond) < 0) {
-        job->cb->freeJobPrivate(job->privateData);
+    if (job->cb &&
+        !(job->privateData = job->cb->allocJobPrivate())) {
         virCondDestroy(&job->cond);
+        virCondDestroy(&job->asyncCond);
         return -1;
     }