[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