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>
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;
}