On 01/10/2017 01:23 AM, Wang King wrote:
> Probably causes 'vm' to be disposed in execute qemuProcessAutoDestroy
> callback function, reference 'vm' avoid unlock disposed object.
> 
> Signed-off-by: Wang King <[email protected]>
> ---
>  src/util/virclosecallbacks.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 

I don't see how getting an extra Ref resolves the issue...

Let's see how 2/3 falls out, but I think this one is dropped.

John
> diff --git a/src/util/virclosecallbacks.c b/src/util/virclosecallbacks.c
> index 633b22c..ab11e95 100644
> --- a/src/util/virclosecallbacks.c
> +++ b/src/util/virclosecallbacks.c
> @@ -337,18 +337,20 @@ virCloseCallbacksRun(virCloseCallbacksPtr 
> closeCallbacks,
>  
>      for (i = 0; i < list->nentries; i++) {
>          virDomainObjPtr vm;
> +        virDomainObjPtr dom;
>  
> -        if (!(vm = virDomainObjListFindByUUID(domains,
> -                                              list->entries[i].uuid))) {
> +        if (!(vm = virDomainObjListFindByUUIDRef(domains,
> +                                                 list->entries[i].uuid))) {
>              char uuidstr[VIR_UUID_STRING_BUFLEN];
>              virUUIDFormat(list->entries[i].uuid, uuidstr);
>              VIR_DEBUG("No domain object with UUID %s", uuidstr);
>              continue;
>          }
>  
> -        vm = list->entries[i].callback(vm, conn, opaque);
> -        if (vm)
> -            virObjectUnlock(vm);
> +        dom = list->entries[i].callback(vm, conn, opaque);
> +        if (dom)
> +            virObjectUnlock(dom);
> +        virObjectUnref(vm);
>      }
>  
>      virObjectLock(closeCallbacks);
> 

--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to