提交 ee3a86d7 编写于 作者: J John Ferlan

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: NJohn Ferlan <jferlan@redhat.com>
Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 a39427be
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册