mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-27 18:03:50 +03:00
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:
parent
7bed630dfb
commit
5313dc372b
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user