[libvirt] [PATCH] virsh: plug memory leak on cmdDomIfGetLink() sucessful path

Osier Yang jyang at redhat.com
Thu Dec 8 06:22:19 UTC 2011


On 2011年12月08日 14:09, ajia at redhat.com wrote:
> From: Alex Jia<ajia at redhat.com>
>
> Detected by valgrind. Leak introduced in commit dc675f3:
>
> * tools/virsh.c: fix memory leak on cmdDomIfGetLink.
>
> * how to reproduce?
>    % valgrind -v --leak-check=full virsh domif-getlink<domain name>  0
>
> * actual valgrind result:
>
> ==13102== 18 bytes in 1 blocks are definitely lost in loss record 9 of 47
> ==13102==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
> ==13102==    by 0x322A6A67DD: xmlStrndup (in /usr/lib64/libxml2.so.2.7.6)
> ==13102==    by 0x414892: cmdDomIfGetLink (virsh.c:1538)
> ==13102==    by 0x4136A2: vshCommandRun (virsh.c:16363)
> ==13102==    by 0x4253FB: main (virsh.c:17865)
> ==13102==
> ==13102== LEAK SUMMARY:
> ==13102==    definitely lost: 18 bytes in 1 blocks
> ==13102==    indirectly lost: 0 bytes in 0 blocks
> ==13102==      possibly lost: 0 bytes in 0 blocks
> ==13102==    still reachable: 127,888 bytes in 1,361 blocks
> ==13102==         suppressed: 0 bytes in 0 blocks
>
> 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 e6e4f8b..276e1cc 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -1538,7 +1538,6 @@ cmdDomIfGetLink (vshControl *ctl, const vshCmd *cmd)
>                   mac = virXMLPropString(cur, "address");
>
>                   if (STRCASEEQ(mac, iface)){
> -                    VIR_FREE(mac);
>                       goto hit;
>                   }
>               }
> @@ -1574,6 +1573,7 @@ cleanup:
>       if (dom)
>           virDomainFree(dom);
>
> +    VIR_FREE(mac);
>       return ret;
>   }
>


ACK.

Osier




More information about the libvir-list mailing list