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

Alex Jia ajia at redhat.com
Fri Feb 10 06:47:57 UTC 2012


On 02/10/2012 02:28 PM, Osier Yang wrote:
> 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
>
Thanks and pushed now.

Alex




More information about the libvir-list mailing list