[libvirt] [PATCH] Fix incorrect reference counting logic in qemu monitor open
Ryota Ozaki
ozaki.ryota at gmail.com
Fri Nov 13 13:00:01 UTC 2009
On Fri, Nov 13, 2009 at 8:45 PM, Daniel P. Berrange <berrange at redhat.com> wrote:
> 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
ACK, actually this fix and a fix for hal make my libvirtd
worked successfully!
ozaki-r
>
> * src/qemu/qemu_monitor.c: Fix reference counting in
> qemuMonitorOpen
> ---
> src/qemu/qemu_monitor.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index 2357734..f0ef81b 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -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);
>
> --
> 1.6.2.5
>
> --
> Libvir-list mailing list
> Libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
More information about the libvir-list
mailing list