mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
uml: Fix umlInotifyEvent dom object handling
The virDomainObjListFindByName will return a locked and reffed object. If we call virDomainObjListRemove that will unlock the object upon return, thus we need to relock the object before making the call to virDomainObjEndAPI. Signed-off-by: John Ferlan <jferlan@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
a39427be49
commit
ee3a86d721
@ -346,8 +346,10 @@ umlInotifyEvent(int watch,
|
||||
event = virDomainEventLifecycleNewFromObj(dom,
|
||||
VIR_DOMAIN_EVENT_STOPPED,
|
||||
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
||||
if (!dom->persistent)
|
||||
if (!dom->persistent) {
|
||||
virDomainObjListRemove(driver->domains, dom);
|
||||
virObjectLock(dom);
|
||||
}
|
||||
} else if (e.mask & (IN_CREATE | IN_MODIFY)) {
|
||||
VIR_DEBUG("Got inotify domain startup '%s'", name);
|
||||
if (virDomainObjIsActive(dom)) {
|
||||
@ -377,8 +379,10 @@ umlInotifyEvent(int watch,
|
||||
event = virDomainEventLifecycleNewFromObj(dom,
|
||||
VIR_DOMAIN_EVENT_STOPPED,
|
||||
VIR_DOMAIN_EVENT_STOPPED_FAILED);
|
||||
if (!dom->persistent)
|
||||
if (!dom->persistent) {
|
||||
virDomainObjListRemove(driver->domains, dom);
|
||||
virObjectLock(dom);
|
||||
}
|
||||
} else if (umlIdentifyChrPTY(driver, dom) < 0) {
|
||||
VIR_WARN("Could not identify character devices for new domain");
|
||||
umlShutdownVMDaemon(driver, dom,
|
||||
@ -387,8 +391,10 @@ umlInotifyEvent(int watch,
|
||||
event = virDomainEventLifecycleNewFromObj(dom,
|
||||
VIR_DOMAIN_EVENT_STOPPED,
|
||||
VIR_DOMAIN_EVENT_STOPPED_FAILED);
|
||||
if (!dom->persistent)
|
||||
if (!dom->persistent) {
|
||||
virDomainObjListRemove(driver->domains, dom);
|
||||
virObjectLock(dom);
|
||||
}
|
||||
}
|
||||
}
|
||||
virDomainObjEndAPI(&dom);
|
||||
|
Loading…
x
Reference in New Issue
Block a user