diff mbox series

vl: fix memory leak in configure_accelerators

Message ID 20200108114207.58084-1-kuhn.chenqun@huawei.com (mailing list archive)
State New, archived
Headers show
Series vl: fix memory leak in configure_accelerators | expand

Commit Message

Chen Qun Jan. 8, 2020, 11:42 a.m. UTC
From: Chen Qun <kuhn.chenqun@huawei.com>

The accel_list forgot to free, the asan output:

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0xffff919331cb in __interceptor_malloc (/lib64/libasan.so.4+0xd31cb)
    #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
    #2 0xffff91413d9b in g_strsplit (/lib64/libglib-2.0.so.0+0x73d9b)
    #3 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
    #4 0xaaab42fb58e7 in main /qemu/vl.c:4121
    #5 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
    #6 0xaaab42fc1dab  (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)

Indirect leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0xffff919331cb in __interceptor_malloc (/lib64/libasan.so.4+0xd31cb)
    #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
    #2 0xffff9141243b in g_strdup (/lib64/libglib-2.0.so.0+0x7243b)
    #3 0xffff91413e6f in g_strsplit (/lib64/libglib-2.0.so.0+0x73e6f)
    #4 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
    #5 0xaaab42fb58e7 in main /qemu/vl.c:4121
    #6 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
    #7 0xaaab42fc1dab  (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
---
 vl.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Philippe Mathieu-Daudé Jan. 8, 2020, 2:56 p.m. UTC | #1
On 1/8/20 12:42 PM, kuhn.chenqun@huawei.com wrote:
> From: Chen Qun <kuhn.chenqun@huawei.com>
> 
> The accel_list forgot to free, the asan output:
> 
> Direct leak of 16 byte(s) in 1 object(s) allocated from:
>      #0 0xffff919331cb in __interceptor_malloc (/lib64/libasan.so.4+0xd31cb)
>      #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
>      #2 0xffff91413d9b in g_strsplit (/lib64/libglib-2.0.so.0+0x73d9b)
>      #3 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
>      #4 0xaaab42fb58e7 in main /qemu/vl.c:4121
>      #5 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
>      #6 0xaaab42fc1dab  (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)
> 
> Indirect leak of 4 byte(s) in 1 object(s) allocated from:
>      #0 0xffff919331cb in __interceptor_malloc (/lib64/libasan.so.4+0xd31cb)
>      #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
>      #2 0xffff9141243b in g_strdup (/lib64/libglib-2.0.so.0+0x7243b)
>      #3 0xffff91413e6f in g_strsplit (/lib64/libglib-2.0.so.0+0x73e6f)
>      #4 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
>      #5 0xaaab42fb58e7 in main /qemu/vl.c:4121
>      #6 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
>      #7 0xaaab42fc1dab  (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)
> 
> Reported-by: Euler Robot <euler.robot@huawei.com>
> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---
>   vl.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/vl.c b/vl.c
> index 86474a55c9..035a24e52b 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2788,6 +2788,7 @@ static void configure_accelerators(const char *progname)
>                   error_report("invalid accelerator %s", *tmp);
>               }
>           }
> +        g_strfreev(accel_list);
>       } else {
>           if (accel != NULL) {
>               error_report("The -accel and \"-machine accel=\" options are incompatible");
>
Paolo Bonzini Jan. 8, 2020, 2:59 p.m. UTC | #2
On 08/01/20 15:56, Philippe Mathieu-Daudé wrote:
> On 1/8/20 12:42 PM, kuhn.chenqun@huawei.com wrote:
>> From: Chen Qun <kuhn.chenqun@huawei.com>
>>
>> The accel_list forgot to free, the asan output:
>>
>> Direct leak of 16 byte(s) in 1 object(s) allocated from:
>>      #0 0xffff919331cb in __interceptor_malloc
>> (/lib64/libasan.so.4+0xd31cb)
>>      #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
>>      #2 0xffff91413d9b in g_strsplit (/lib64/libglib-2.0.so.0+0x73d9b)
>>      #3 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
>>      #4 0xaaab42fb58e7 in main /qemu/vl.c:4121
>>      #5 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
>>      #6 0xaaab42fc1dab 
>> (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)
>>
>> Indirect leak of 4 byte(s) in 1 object(s) allocated from:
>>      #0 0xffff919331cb in __interceptor_malloc
>> (/lib64/libasan.so.4+0xd31cb)
>>      #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
>>      #2 0xffff9141243b in g_strdup (/lib64/libglib-2.0.so.0+0x7243b)
>>      #3 0xffff91413e6f in g_strsplit (/lib64/libglib-2.0.so.0+0x73e6f)
>>      #4 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
>>      #5 0xaaab42fb58e7 in main /qemu/vl.c:4121
>>      #6 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
>>      #7 0xaaab42fc1dab 
>> (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)
>>
>> Reported-by: Euler Robot <euler.robot@huawei.com>
>> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
> 
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> 
>> ---
>>   vl.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/vl.c b/vl.c
>> index 86474a55c9..035a24e52b 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -2788,6 +2788,7 @@ static void configure_accelerators(const char
>> *progname)
>>                   error_report("invalid accelerator %s", *tmp);
>>               }
>>           }
>> +        g_strfreev(accel_list);
>>       } else {
>>           if (accel != NULL) {
>>               error_report("The -accel and \"-machine accel=\" options
>> are incompatible");
>>
> 

Cc; qemu-trivial@nongnu.org
Laurent Vivier Jan. 8, 2020, 3:13 p.m. UTC | #3
Le 08/01/2020 à 12:42, kuhn.chenqun@huawei.com a écrit :
> From: Chen Qun <kuhn.chenqun@huawei.com>
> 
> The accel_list forgot to free, the asan output:
> 
> Direct leak of 16 byte(s) in 1 object(s) allocated from:
>     #0 0xffff919331cb in __interceptor_malloc (/lib64/libasan.so.4+0xd31cb)
>     #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
>     #2 0xffff91413d9b in g_strsplit (/lib64/libglib-2.0.so.0+0x73d9b)
>     #3 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
>     #4 0xaaab42fb58e7 in main /qemu/vl.c:4121
>     #5 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
>     #6 0xaaab42fc1dab  (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)
> 
> Indirect leak of 4 byte(s) in 1 object(s) allocated from:
>     #0 0xffff919331cb in __interceptor_malloc (/lib64/libasan.so.4+0xd31cb)
>     #1 0xffff913f7163 in g_malloc (/lib64/libglib-2.0.so.0+0x57163)
>     #2 0xffff9141243b in g_strdup (/lib64/libglib-2.0.so.0+0x7243b)
>     #3 0xffff91413e6f in g_strsplit (/lib64/libglib-2.0.so.0+0x73e6f)
>     #4 0xaaab42fb58e7 in configure_accelerators /qemu/vl.c:2777
>     #5 0xaaab42fb58e7 in main /qemu/vl.c:4121
>     #6 0xffff8f9b0b9f in __libc_start_main (/lib64/libc.so.6+0x20b9f)
>     #7 0xaaab42fc1dab  (/qemu/build/aarch64-softmmu/qemu-system-aarch64+0x8b1dab)
> 
> Reported-by: Euler Robot <euler.robot@huawei.com>
> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
> ---
>  vl.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/vl.c b/vl.c
> index 86474a55c9..035a24e52b 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2788,6 +2788,7 @@ static void configure_accelerators(const char *progname)
>                  error_report("invalid accelerator %s", *tmp);
>              }
>          }
> +        g_strfreev(accel_list);
>      } else {
>          if (accel != NULL) {
>              error_report("The -accel and \"-machine accel=\" options are incompatible");
> 

Applied to my trivial-patches branch.

Thanks,
Laurent
diff mbox series

Patch

diff --git a/vl.c b/vl.c
index 86474a55c9..035a24e52b 100644
--- a/vl.c
+++ b/vl.c
@@ -2788,6 +2788,7 @@  static void configure_accelerators(const char *progname)
                 error_report("invalid accelerator %s", *tmp);
             }
         }
+        g_strfreev(accel_list);
     } else {
         if (accel != NULL) {
             error_report("The -accel and \"-machine accel=\" options are incompatible");