[libvirt] [PATCH] virsh: avoid memory leak on cmdVolCreateAs

Eric Blake eblake at redhat.com
Thu Sep 1 18:41:44 UTC 2011


On 09/01/2011 11:12 AM, Alex Jia wrote:
> * tools/virsh.c: fix memory leak on cmdVolCreateAs function.
>

> % valgrind -v --leak-check=full virsh vol-create-as default foo.img 10M \
>    --allocation 0 --format qcow2 --backing-vol bar.img
>
> Notes: bar.img doesn't exist.
>
> Signed-off-by: Alex Jia<ajia at redhat.com>
> ---
>   tools/virsh.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/tools/virsh.c b/tools/virsh.c
> index f9bcd2c..44c2f1c 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -8166,7 +8166,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
>           }
>           if (snapVol == NULL) {
>               vshError(ctl, _("failed to get vol '%s'"), snapshotStrVol);
> -            return false;
> +            goto cleanup;

Incomplete.  There were a couple other early returns in this function. 
I'm pushing with this squashed in:


diff --git i/tools/virsh.c w/tools/virsh.c
index 7453995..5c5343e 100644
--- i/tools/virsh.c
+++ w/tools/virsh.c
@@ -8211,7 +8211,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
          char *snapshotStrVolPath;
          if ((snapshotStrVolPath = virStorageVolGetPath(snapVol)) == 
NULL) {
              virStorageVolFree(snapVol);
-            return false;
+            goto cleanup;
          }

          /* Create XML for the backing store */
@@ -8230,7 +8230,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)

      if (virBufferError(&buf)) {
          vshPrint(ctl, "%s", _("Failed to allocate XML buffer"));
-        return false;
+        goto cleanup;
      }
      xml = virBufferContentAndReset(&buf);
      vol = virStorageVolCreateXML(pool, xml, 0);

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




More information about the libvir-list mailing list