]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ch: Unlock domain in virCHEventStopProcess() on all exit paths
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 10 Sep 2025 09:43:53 +0000 (11:43 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 11 Sep 2025 14:31:11 +0000 (16:31 +0200)
The aim of virCHEventStopProcess() is to clean up after stopped
domain by calling virCHProcessStop(). But in order to do that it
needs to acquire a job and in order to do that it needs to lock
the domain object. Well, the object is not unlocked in all exit
paths, i.e. when job acquiring fails the domain object is left
locked.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/ch/ch_events.c

index 25c7ecf90addb71d6205c9302651b96d5e9d397e..cd2f92a4933b91665e2ac7688c7238f8d804abcd 100644 (file)
@@ -55,13 +55,12 @@ virCHEventStopProcess(virDomainObj *vm,
                       virDomainShutoffReason reason)
 {
     virCHDriver *driver = CH_DOMAIN_PRIVATE(vm)->driver;
+    VIR_LOCK_GUARD lock = virObjectLockGuard(vm);
 
-    virObjectLock(vm);
     if (virDomainObjBeginJob(vm, VIR_JOB_DESTROY))
         return -1;
     virCHProcessStop(driver, vm, reason, VIR_CH_PROCESS_STOP_FORCE);
     virDomainObjEndJob(vm);
-    virObjectUnlock(vm);
 
     return 0;
 }