提交 5313dc37 编写于 作者: D Daniel P. Berrange

Fix incorrect reference counting logic in qemu monitor open

The QEMU monitor open method would not take a reference on
the virDomainObjPtr until it had successfully opened the
monitor. The cleanup code upon failure to open though would
call qemuMonitorClose() which would in turn decrement the
reference count. This caused the virDoaminObjPtr to be mistakenly
freed and then the whole driver crashes

* src/qemu/qemu_monitor.c: Fix reference counting in
  qemuMonitorOpen
上级 7bed630d
......@@ -456,6 +456,7 @@ qemuMonitorOpen(virDomainObjPtr vm,
mon->vm = vm;
mon->eofCB = eofCB;
qemuMonitorLock(mon);
virDomainObjRef(vm);
switch (vm->monitor_chr->type) {
case VIR_DOMAIN_CHR_TYPE_UNIX:
......@@ -499,8 +500,6 @@ qemuMonitorOpen(virDomainObjPtr vm,
goto cleanup;
}
virDomainObjRef(vm);
VIR_DEBUG("New mon %p fd =%d watch=%d", mon, mon->fd, mon->watch);
qemuMonitorUnlock(mon);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册