[libvirt] [PATCH] Fix more reference leaks for node devices

Reported by Chris Lalancette, I just found more instances of the same pattern. --- daemon/remote.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index ec5f85b..cb9e83d 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -5126,10 +5126,12 @@ remoteDispatchNodeDeviceDettach (struct qemud_server *server ATTRIBUTE_UNUSED, } if (virNodeDeviceDettach(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; } + virNodeDeviceFree(dev); return 0; } @@ -5153,10 +5155,12 @@ remoteDispatchNodeDeviceReAttach (struct qemud_server *server ATTRIBUTE_UNUSED, } if (virNodeDeviceReAttach(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; } + virNodeDeviceFree(dev); return 0; } @@ -5180,10 +5184,12 @@ remoteDispatchNodeDeviceReset (struct qemud_server *server ATTRIBUTE_UNUSED, } if (virNodeDeviceReset(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; } + virNodeDeviceFree(dev); return 0; } @@ -5230,10 +5236,12 @@ remoteDispatchNodeDeviceDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, } if (virNodeDeviceDestroy(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; } + virNodeDeviceFree(dev); return 0; } -- 1.7.0.4

On 06/25/2010 04:02 PM, Matthias Bolte wrote:
Reported by Chris Lalancette, I just found more instances of the same pattern. --- daemon/remote.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c index ec5f85b..cb9e83d 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -5126,10 +5126,12 @@ remoteDispatchNodeDeviceDettach (struct qemud_server *server ATTRIBUTE_UNUSED, }
if (virNodeDeviceDettach(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; }
+ virNodeDeviceFree(dev); return 0;
ACK, but again the same comment that if Chris' patch is changed to use a goto cleanup idiom, then this one should as well. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On 06/25/2010 06:02 PM, Matthias Bolte wrote:
Reported by Chris Lalancette, I just found more instances of the same pattern. --- daemon/remote.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c index ec5f85b..cb9e83d 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -5126,10 +5126,12 @@ remoteDispatchNodeDeviceDettach (struct qemud_server *server ATTRIBUTE_UNUSED, }
if (virNodeDeviceDettach(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; }
+ virNodeDeviceFree(dev); return 0; }
@@ -5153,10 +5155,12 @@ remoteDispatchNodeDeviceReAttach (struct qemud_server *server ATTRIBUTE_UNUSED, }
if (virNodeDeviceReAttach(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; }
+ virNodeDeviceFree(dev); return 0; }
@@ -5180,10 +5184,12 @@ remoteDispatchNodeDeviceReset (struct qemud_server *server ATTRIBUTE_UNUSED, }
if (virNodeDeviceReset(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; }
+ virNodeDeviceFree(dev); return 0; }
@@ -5230,10 +5236,12 @@ remoteDispatchNodeDeviceDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, }
if (virNodeDeviceDestroy(dev) == -1) { + virNodeDeviceFree(dev); remoteDispatchConnError(rerr, conn); return -1; }
+ virNodeDeviceFree(dev); return 0; }
Yep, that's what I was talking about! ACK to this as well. The combination of the two patches looks like it gets everything.

2010/6/26 Laine Stump <laine@laine.org>:
On 06/25/2010 06:02 PM, Matthias Bolte wrote:
Reported by Chris Lalancette, I just found more instances of the same pattern. --- daemon/remote.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
Yep, that's what I was talking about! ACK to this as well. The combination of the two patches looks like it gets everything.
Thanks, I squashed this one into Chris' patch. Matthias
participants (3)
-
Eric Blake
-
Laine Stump
-
Matthias Bolte