[libvirt] [PATCH] rpc: Plug memory leaks on doRemoteOpen() failure path

Osier Yang jyang at redhat.com
Fri Feb 10 06:28:45 UTC 2012


On 2012年02月10日 13:57, ajia at redhat.com wrote:
> From: Alex Jia<ajia at redhat.com>
>
> Detected by valgrind. Leaks are introduced in commit c1b2264.
>
> * src/remote/remote_driver.c (doRemoteOpen): free client program memory in failure path.
>
> * How to reproduce?
> % valgrind -v --leak-check=full virsh -c qemu:
>
> * Actual result
>
> ==3969== 40 bytes in 1 blocks are definitely lost in loss record 8 of 28
> ==3969==    at 0x4A04A28: calloc (vg_replace_malloc.c:467)
>      ==3969==    by 0x4C89C41: virAlloc (memory.c:101)
>      ==3969==    by 0x4D5A236: virNetClientProgramNew (virnetclientprogram.c:60)
>      ==3969==    by 0x4D47AB4: doRemoteOpen (remote_driver.c:658)
>      ==3969==    by 0x4D49FFF: remoteOpen (remote_driver.c:871)
>      ==3969==    by 0x4D13373: do_open (libvirt.c:1196)
>      ==3969==    by 0x4D14535: virConnectOpenAuth (libvirt.c:1422)
>      ==3969==    by 0x425627: main (virsh.c:18537)
>      ==3969==
>      ==3969== 40 bytes in 1 blocks are definitely lost in loss record 9 of 28
>      ==3969==    at 0x4A04A28: calloc (vg_replace_malloc.c:467)
>      ==3969==    by 0x4C89C41: virAlloc (memory.c:101)
>      ==3969==    by 0x4D5A236: virNetClientProgramNew (virnetclientprogram.c:60)
>      ==3969==    by 0x4D47AD7: doRemoteOpen (remote_driver.c:664)
>      ==3969==    by 0x4D49FFF: remoteOpen (remote_driver.c:871)
>      ==3969==    by 0x4D13373: do_open (libvirt.c:1196)
>      ==3969==    by 0x4D14535: virConnectOpenAuth (libvirt.c:1422)
>      ==3969==    by 0x425627: main (virsh.c:18537)
>      ==3969==
>      ==3969== LEAK SUMMARY:
>      ==3969==    definitely lost: 80 bytes in 2 blocks
>
>
> Signed-off-by: Alex Jia<ajia at redhat.com>
> ---
>   src/remote/remote_driver.c |    2 ++
>   1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
> index e068126..2dacb70 100644
> --- a/src/remote/remote_driver.c
> +++ b/src/remote/remote_driver.c
> @@ -753,6 +753,8 @@ doRemoteOpen (virConnectPtr conn,
>           free_qparam_set (vars);
>
>    failed:
> +    virNetClientProgramFree(priv->remoteProgram);
> +    virNetClientProgramFree(priv->qemuProgram);
>       virNetClientClose(priv->client);
>       virNetClientFree(priv->client);
>       priv->client = NULL;

ACK




More information about the libvir-list mailing list