diff mbox

[PATCH/RFC] vl.c: fix memory leak spotted by valgrind

Message ID 1422457637-45862-1-git-send-email-borntraeger@de.ibm.com
State New
Headers show

Commit Message

Christian Borntraeger Jan. 28, 2015, 3:07 p.m. UTC
valgrind complains about:
==42062== 16 bytes in 1 blocks are definitely lost in loss record 387 of 1,048
==42062==    at 0x402DCB2: malloc (vg_replace_malloc.c:299)
==42062==    by 0x40C1BE3: g_malloc (in /usr/lib64/libglib-2.0.so.0.3800.2)
==42062==    by 0x40DA133: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.3800.2)
==42062==    by 0x40DB2E5: g_slist_prepend (in /usr/lib64/libglib-2.0.so.0.3800.2)
==42062==    by 0x801637FF: object_class_get_list_tramp (object.c:690)
==42062==    by 0x40A96C9: g_hash_table_foreach (in /usr/lib64/libglib-2.0.so.0.3800.2)
==42062==    by 0x80164885: object_class_foreach (object.c:665)
==42062==    by 0x80164975: object_class_get_list (object.c:698)
==42062==    by 0x800100A5: machine_parse (vl.c:2447)
==42062==    by 0x800100A5: main (vl.c:3756)

Lets free machines in case of mc.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 vl.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Paolo Bonzini Jan. 28, 2015, 3:18 p.m. UTC | #1
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

and Ccing qemu-trivial.  Funny that we do the g_slist_free before exiting!

Paolo

On 28/01/2015 16:07, Christian Borntraeger wrote:
> valgrind complains about:
> ==42062== 16 bytes in 1 blocks are definitely lost in loss record 387 of 1,048
> ==42062==    at 0x402DCB2: malloc (vg_replace_malloc.c:299)
> ==42062==    by 0x40C1BE3: g_malloc (in /usr/lib64/libglib-2.0.so.0.3800.2)
> ==42062==    by 0x40DA133: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.3800.2)
> ==42062==    by 0x40DB2E5: g_slist_prepend (in /usr/lib64/libglib-2.0.so.0.3800.2)
> ==42062==    by 0x801637FF: object_class_get_list_tramp (object.c:690)
> ==42062==    by 0x40A96C9: g_hash_table_foreach (in /usr/lib64/libglib-2.0.so.0.3800.2)
> ==42062==    by 0x80164885: object_class_foreach (object.c:665)
> ==42062==    by 0x80164975: object_class_get_list (object.c:698)
> ==42062==    by 0x800100A5: machine_parse (vl.c:2447)
> ==42062==    by 0x800100A5: main (vl.c:3756)
> 
> Lets free machines in case of mc.
> 
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  vl.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/vl.c b/vl.c
> index 983259b..9d008ac 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2450,6 +2450,7 @@ static gint machine_class_cmp(gconstpointer a, gconstpointer b)
>          mc = find_machine(name);
>      }
>      if (mc) {
> +        g_slist_free(machines);
>          return mc;
>      }
>      if (name && !is_help_option(name)) {
>
Michael Tokarev Feb. 7, 2015, 9:03 a.m. UTC | #2
28.01.2015 18:18, Paolo Bonzini wrote:
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

Applied to -trivial, thank you!

/mjt

> On 28/01/2015 16:07, Christian Borntraeger wrote:
>> valgrind complains about:
>> ==42062== 16 bytes in 1 blocks are definitely lost in loss record 387 of 1,048
>> ==42062==    at 0x402DCB2: malloc (vg_replace_malloc.c:299)
>> ==42062==    by 0x40C1BE3: g_malloc (in /usr/lib64/libglib-2.0.so.0.3800.2)
>> ==42062==    by 0x40DA133: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.3800.2)
>> ==42062==    by 0x40DB2E5: g_slist_prepend (in /usr/lib64/libglib-2.0.so.0.3800.2)
>> ==42062==    by 0x801637FF: object_class_get_list_tramp (object.c:690)
>> ==42062==    by 0x40A96C9: g_hash_table_foreach (in /usr/lib64/libglib-2.0.so.0.3800.2)
>> ==42062==    by 0x80164885: object_class_foreach (object.c:665)
>> ==42062==    by 0x80164975: object_class_get_list (object.c:698)
>> ==42062==    by 0x800100A5: machine_parse (vl.c:2447)
>> ==42062==    by 0x800100A5: main (vl.c:3756)
>>
>> Lets free machines in case of mc.
>>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> ---
>>  vl.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/vl.c b/vl.c
>> index 983259b..9d008ac 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -2450,6 +2450,7 @@ static gint machine_class_cmp(gconstpointer a, gconstpointer b)
>>          mc = find_machine(name);
>>      }
>>      if (mc) {
>> +        g_slist_free(machines);
>>          return mc;
>>      }
>>      if (name && !is_help_option(name)) {
>>
>
diff mbox

Patch

diff --git a/vl.c b/vl.c
index 983259b..9d008ac 100644
--- a/vl.c
+++ b/vl.c
@@ -2450,6 +2450,7 @@  static gint machine_class_cmp(gconstpointer a, gconstpointer b)
         mc = find_machine(name);
     }
     if (mc) {
+        g_slist_free(machines);
         return mc;
     }
     if (name && !is_help_option(name)) {