[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