Re: [PATCH v2] hw/char/exynos4210_uart: Fix memleaks in exynos4210_uart_init

2020-02-13 Thread Peter Maydell
On Thu, 13 Feb 2020 at 10:09, Philippe Mathieu-Daudé  wrote:
>
> On 2/13/20 3:56 AM, kuhn.chen...@huawei.com wrote:
> > From: Chen Qun 
> >
> > It's easy to reproduce as follow:
> > virsh qemu-monitor-command vm1 --pretty '{"execute": 
> > "device-list-properties",
> > "arguments":{"typename":"exynos4210.uart"}}'
> >
> > ASAN shows memory leak stack:
> >#1 0xfffd896d71cb in g_malloc0 (/lib64/libglib-2.0.so.0+0x571cb)
> >#2 0xaaad270beee3 in timer_new_full /qemu/include/qemu/timer.h:530
> >#3 0xaaad270beee3 in timer_new /qemu/include/qemu/timer.h:551
> >#4 0xaaad270beee3 in timer_new_ns /qemu/include/qemu/timer.h:569
> >#5 0xaaad270beee3 in exynos4210_uart_init 
> > /qemu/hw/char/exynos4210_uart.c:677
> >#6 0xaaad275c8f4f in object_initialize_with_type /qemu/qom/object.c:516
> >#7 0xaaad275c91bb in object_new_with_type /qemu/qom/object.c:684
> >#8 0xaaad2755df2f in qmp_device_list_properties 
> > /qemu/qom/qom-qmp-cmds.c:152
> >
> > Reported-by: Euler Robot 
> > Signed-off-by: Chen Qun 
> > ---
> > Changes V2 to V1:
> > -Keep s->wordtime in exynos4210_uart_init (Base on Eduardo and Philippe's 
> > comments).
>
> Thanks.
>
> Reviewed-by: Philippe Mathieu-Daudé 



Applied to target-arm.next, thanks.

-- PMM



Re: [PATCH v2] hw/char/exynos4210_uart: Fix memleaks in exynos4210_uart_init

2020-02-13 Thread Philippe Mathieu-Daudé

On 2/13/20 3:56 AM, kuhn.chen...@huawei.com wrote:

From: Chen Qun 

It's easy to reproduce as follow:
virsh qemu-monitor-command vm1 --pretty '{"execute": "device-list-properties",
"arguments":{"typename":"exynos4210.uart"}}'

ASAN shows memory leak stack:
   #1 0xfffd896d71cb in g_malloc0 (/lib64/libglib-2.0.so.0+0x571cb)
   #2 0xaaad270beee3 in timer_new_full /qemu/include/qemu/timer.h:530
   #3 0xaaad270beee3 in timer_new /qemu/include/qemu/timer.h:551
   #4 0xaaad270beee3 in timer_new_ns /qemu/include/qemu/timer.h:569
   #5 0xaaad270beee3 in exynos4210_uart_init /qemu/hw/char/exynos4210_uart.c:677
   #6 0xaaad275c8f4f in object_initialize_with_type /qemu/qom/object.c:516
   #7 0xaaad275c91bb in object_new_with_type /qemu/qom/object.c:684
   #8 0xaaad2755df2f in qmp_device_list_properties /qemu/qom/qom-qmp-cmds.c:152

Reported-by: Euler Robot 
Signed-off-by: Chen Qun 
---
Changes V2 to V1:
-Keep s->wordtime in exynos4210_uart_init (Base on Eduardo and Philippe's 
comments).


Thanks.

Reviewed-by: Philippe Mathieu-Daudé 


---
  hw/char/exynos4210_uart.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index 25d6588e41..96d5180e3e 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -674,8 +674,6 @@ static void exynos4210_uart_init(Object *obj)
  SysBusDevice *dev = SYS_BUS_DEVICE(obj);
  Exynos4210UartState *s = EXYNOS4210_UART(dev);
  
-s->fifo_timeout_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,

- exynos4210_uart_timeout_int, s);
  s->wordtime = NANOSECONDS_PER_SECOND * 10 / 9600;
  
  /* memory mapping */

@@ -691,6 +689,9 @@ static void exynos4210_uart_realize(DeviceState *dev, Error 
**errp)
  {
  Exynos4210UartState *s = EXYNOS4210_UART(dev);
  
+s->fifo_timeout_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,

+ exynos4210_uart_timeout_int, s);
+
  qemu_chr_fe_set_handlers(>chr, exynos4210_uart_can_receive,
   exynos4210_uart_receive, exynos4210_uart_event,
   NULL, s, NULL, true);






[PATCH v2] hw/char/exynos4210_uart: Fix memleaks in exynos4210_uart_init

2020-02-12 Thread kuhn.chenqun
From: Chen Qun 

It's easy to reproduce as follow:
virsh qemu-monitor-command vm1 --pretty '{"execute": "device-list-properties",
"arguments":{"typename":"exynos4210.uart"}}'

ASAN shows memory leak stack:
  #1 0xfffd896d71cb in g_malloc0 (/lib64/libglib-2.0.so.0+0x571cb)
  #2 0xaaad270beee3 in timer_new_full /qemu/include/qemu/timer.h:530
  #3 0xaaad270beee3 in timer_new /qemu/include/qemu/timer.h:551
  #4 0xaaad270beee3 in timer_new_ns /qemu/include/qemu/timer.h:569
  #5 0xaaad270beee3 in exynos4210_uart_init /qemu/hw/char/exynos4210_uart.c:677
  #6 0xaaad275c8f4f in object_initialize_with_type /qemu/qom/object.c:516
  #7 0xaaad275c91bb in object_new_with_type /qemu/qom/object.c:684
  #8 0xaaad2755df2f in qmp_device_list_properties /qemu/qom/qom-qmp-cmds.c:152

Reported-by: Euler Robot 
Signed-off-by: Chen Qun 
---
Changes V2 to V1:
-Keep s->wordtime in exynos4210_uart_init (Base on Eduardo and Philippe's 
comments).
---
 hw/char/exynos4210_uart.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index 25d6588e41..96d5180e3e 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -674,8 +674,6 @@ static void exynos4210_uart_init(Object *obj)
 SysBusDevice *dev = SYS_BUS_DEVICE(obj);
 Exynos4210UartState *s = EXYNOS4210_UART(dev);
 
-s->fifo_timeout_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
- exynos4210_uart_timeout_int, s);
 s->wordtime = NANOSECONDS_PER_SECOND * 10 / 9600;
 
 /* memory mapping */
@@ -691,6 +689,9 @@ static void exynos4210_uart_realize(DeviceState *dev, Error 
**errp)
 {
 Exynos4210UartState *s = EXYNOS4210_UART(dev);
 
+s->fifo_timeout_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
+ exynos4210_uart_timeout_int, s);
+
 qemu_chr_fe_set_handlers(>chr, exynos4210_uart_can_receive,
  exynos4210_uart_receive, exynos4210_uart_event,
  NULL, s, NULL, true);
-- 
2.23.0