[libvirt] [PATCH] qemu: Fix memory leaks

Eric Blake eblake at redhat.com
Sat Dec 31 23:34:14 UTC 2011


On 12/31/2011 02:59 AM, ajia at redhat.com wrote:
> From: Alex Jia <ajia at redhat.com>
> 
> Detected by Coverity. Leaks introduced in commit 93ab585 and
> commit e8d6b29. 

Let's fix this in two parts, to ease backporting (since one was
pre-0.9.8 and the other only in 0.9.9-rc1). Part 1:

> 
> Signed-off-by: Alex Jia <ajia at redhat.com>
> ---
>  src/qemu/qemu_driver.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index fbaa824..6a1e7cc 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -6014,6 +6014,7 @@ static int qemuDomainSetBlkioParameters(virDomainPtr dom,
>                  }
>                  if (j != ndevices) {
>                      ret = -1;
> +                    VIR_FREE(devices);
>                      continue;

Good catch, but still a leak; this needs to call
virBlkioDeviceWeightArrayClear to avoid a leak.  I'm pushing this instead:

From 8267aea5a6149c9fad399530fc0e8d7f406d22fd Mon Sep 17 00:00:00 2001
From: Eric Blake <eblake at redhat.com>
Date: Sat, 31 Dec 2011 16:32:35 -0700
Subject: [PATCH] qemu: fix blkio memory leak on failure

Leak detected by Coverity, and introduced in commit 93ab585.
Reported by Alex Jia.

* src/qemu/qemu_driver.c (qemuDomainSetBlkioParameters): Free
devices array on error.
---
 src/qemu/qemu_driver.c |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index fbaa824..d89303e 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6012,11 +6012,8 @@ static int
qemuDomainSetBlkioParameters(virDomainPtr dom,
                         break;
                     }
                 }
-                if (j != ndevices) {
-                    ret = -1;
-                    continue;
-                }
-                if (qemuDomainMergeDeviceWeights(&vm->def->blkio.devices,
+                if (j != ndevices ||
+                    qemuDomainMergeDeviceWeights(&vm->def->blkio.devices,
                                                  &vm->def->blkio.ndevices,
                                                  devices, ndevices) < 0)
                     ret = -1;
-- 
1.7.7.4

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

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


More information about the libvir-list mailing list