mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-12 04:58:32 +03:00
lxc: Fix object locking after virDomainObjListRemove
The virDomainObjListRemove will return an unlocked @vm after calling with a reffed object, thus prior to calling virDomainObjEndAPI we should relock. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
abd1e54f4c
commit
5290ca53a9
@ -493,6 +493,7 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
|
||||
if (virDomainSaveConfig(cfg->configDir, driver->caps,
|
||||
vm->newDef ? vm->newDef : vm->def) < 0) {
|
||||
virDomainObjListRemove(driver->domains, vm);
|
||||
virObjectLock(vm);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@ -557,6 +558,7 @@ static int lxcDomainUndefineFlags(virDomainPtr dom,
|
||||
vm->persistent = 0;
|
||||
} else {
|
||||
virDomainObjListRemove(driver->domains, vm);
|
||||
virObjectLock(vm);
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
@ -1529,8 +1531,10 @@ lxcDomainDestroyFlags(virDomainPtr dom,
|
||||
|
||||
endjob:
|
||||
virLXCDomainObjEndJob(driver, vm);
|
||||
if (!vm->persistent)
|
||||
if (!vm->persistent) {
|
||||
virDomainObjListRemove(driver->domains, vm);
|
||||
virObjectLock(vm);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
virDomainObjEndAPI(&vm);
|
||||
|
Loading…
x
Reference in New Issue
Block a user