[libvirt] [PATCH 04/22] pci: eliminate memory leak in virPCIDeviceReattach

Daniel P. Berrange berrange at redhat.com
Mon Jun 24 14:57:06 UTC 2013


On Mon, Jun 24, 2013 at 05:54:53AM -0400, Laine Stump wrote:
> virPCIDeviceReattach was making the assumption that the dev object
> given to it was one and the same with the dev object on the
> inactiveDevs list. If that had been the case, it would not need to
> free the dev object it removed from the inactive list, because the
> caller of virPCIDeviceReattach always frees the dev object that it
> passes in. Since the dev object passed in is *never* the same object
> that's on the list (it is a different object with the same name and
> attributes, created just for the purpose of searching for the actual
> object), simply doing a "ListSteal" to remove the object from the list
> results in one leaked object; we need to actually free the object
> after removing it from the list.
> ---
>  src/util/virpci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/util/virpci.c b/src/util/virpci.c
> index 10e95bd..1108ef2 100644
> --- a/src/util/virpci.c
> +++ b/src/util/virpci.c
> @@ -1266,7 +1266,7 @@ virPCIDeviceReattach(virPCIDevicePtr dev,
>  
>      /* Steal the dev from list inactiveDevs */
>      if (inactiveDevs)
> -        virPCIDeviceListSteal(inactiveDevs, dev);
> +        virPCIDeviceListDel(inactiveDevs, dev);
>  
>      return 0;
>  }

ACK


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list