[libvirt] [PATCH] Fix a reference leak for node devices.

Eric Blake eblake at redhat.com
Fri Jun 25 21:36:39 UTC 2010


On 06/25/2010 03:22 PM, Chris Lalancette wrote:
> There was one major, and a few minor bugs having to do with
> the reference counting of node devices in daemon/remote.c
> The major bug was that remoteDispatchNodeDeviceListCaps()
> was completely failing to unreference node devices; this
> would lead to many open file descriptors, which would eventually
> fail.
> 
> The minor bugs were along the same lines, but were in rarely
> used error paths.  Still, they should be corrected.
> 
> Signed-off-by: Chris Lalancette <clalance at redhat.com>
> ---
>  daemon/remote.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/daemon/remote.c b/daemon/remote.c
> index 91faa9a..ec5f85b 100644
> --- a/daemon/remote.c
> +++ b/daemon/remote.c
> @@ -5012,11 +5012,13 @@ remoteDispatchNodeDeviceGetParent (struct qemud_server *server ATTRIBUTE_UNUSED,
>          /* remoteDispatchClientRequest will free this. */
>          char **parent_p;
>          if (VIR_ALLOC(parent_p) < 0) {
> +            virNodeDeviceFree(dev);
>              remoteDispatchOOMError(rerr);
>              return -1;
>          }

ACK.  But given the number of places where you had to duplicate this
line insertion, would it be better to change all the return -1 into goto
cleanup, where the cleanup: label guarantees this cleanup for all
possible exit paths?

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100625/36b0a5a1/attachment-0001.sig>


More information about the libvir-list mailing list