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
This commit is contained in:
Daniel P. Berrange 2009-11-13 11:43:09 +00:00
parent 7bed630dfb
commit 5313dc372b

View File

@ -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);