All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gan Qixin <ganqixin@huawei.com>
To: <qemu-devel@nongnu.org>, <qemu-trivial@nongnu.org>
Cc: peter.maydell@linaro.org, thuth@redhat.com,
	zhang.zhanghailiang@huawei.com, Gan Qixin <ganqixin@huawei.com>,
	Euler Robot <euler.robot@huawei.com>,
	kuhn.chenqun@huawei.com, david@gibson.dropbear.id.au
Subject: [PATCH 1/3] pl031: Use timer_free() in the finalize function to avoid memleaks
Date: Fri, 4 Dec 2020 16:12:07 +0800	[thread overview]
Message-ID: <20201204081209.360524-2-ganqixin@huawei.com> (raw)
In-Reply-To: <20201204081209.360524-1-ganqixin@huawei.com>

When running device-introspect-test, a memory leak occurred in the pl031_init
function, this patch use timer_free() in the finalize function to fix it.

ASAN shows memory leak stack:

Direct leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0xffffab97e1f0 in __interceptor_calloc (/lib64/libasan.so.5+0xee1f0)
    #1 0xffffab256800 in g_malloc0 (/lib64/libglib-2.0.so.0+0x56800)
    #2 0xaaabf5621cfc in timer_new_full qemu/include/qemu/timer.h:523
    #3 0xaaabf5621cfc in timer_new qemu/include/qemu/timer.h:544
    #4 0xaaabf5621cfc in timer_new_ns qemu/include/qemu/timer.h:562
    #5 0xaaabf5621cfc in pl031_init qemu/hw/rtc/pl031.c:194
    #6 0xaaabf6339f6c in object_initialize_with_type qemu/qom/object.c:515
    #7 0xaaabf633a1e0 in object_new_with_type qemu/qom/object.c:729
    #8 0xaaabf6375e40 in qmp_device_list_properties qemu/qom/qom-qmp-cmds.c:153
    #9 0xaaabf5a95540 in qdev_device_help qemu/softmmu/qdev-monitor.c:283
    #10 0xaaabf5a96940 in qmp_device_add qemu/softmmu/qdev-monitor.c:801
    #11 0xaaabf5a96e70 in hmp_device_add qemu/softmmu/qdev-monitor.c:916
    #12 0xaaabf5ac0a2c in handle_hmp_command qemu/monitor/hmp.c:1100

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Gan Qixin <ganqixin@huawei.com>
---
Cc: Peter Maydell <peter.maydell@linaro.org>
---
 hw/rtc/pl031.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c
index ae47f09635..2ea3dc1281 100644
--- a/hw/rtc/pl031.c
+++ b/hw/rtc/pl031.c
@@ -194,6 +194,14 @@ static void pl031_init(Object *obj)
     s->timer = timer_new_ns(rtc_clock, pl031_interrupt, s);
 }
 
+static void pl031_finalize(Object *obj)
+{
+    PL031State *s = PL031(obj);
+
+    timer_del(s->timer);
+    timer_free(s->timer);
+}
+
 static int pl031_pre_save(void *opaque)
 {
     PL031State *s = opaque;
@@ -325,11 +333,12 @@ static void pl031_class_init(ObjectClass *klass, void *data)
 }
 
 static const TypeInfo pl031_info = {
-    .name          = TYPE_PL031,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(PL031State),
-    .instance_init = pl031_init,
-    .class_init    = pl031_class_init,
+    .name              = TYPE_PL031,
+    .parent            = TYPE_SYS_BUS_DEVICE,
+    .instance_size     = sizeof(PL031State),
+    .instance_init     = pl031_init,
+    .instance_finalize = pl031_finalize,
+    .class_init        = pl031_class_init,
 };
 
 static void pl031_register_types(void)
-- 
2.27.0



  reply	other threads:[~2020-12-04  8:18 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-04  8:12 [PATCH 0/3] Fix some memleaks caused by timer_new_ns Gan Qixin
2020-12-04  8:12 ` Gan Qixin [this message]
2020-12-15 13:42   ` [PATCH 1/3] pl031: Use timer_free() in the finalize function to avoid memleaks Peter Maydell
2020-12-04  8:12 ` [PATCH 2/3] misc/mos6522: Use timer_free() in the finalize function to avoid memleak Gan Qixin
2020-12-05  9:56   ` David Gibson
2020-12-04  8:12 ` [PATCH 3/3] s390x/cpu: Use timer_free() in the finalize function to avoid memleaks Gan Qixin
2020-12-04  8:36   ` Cornelia Huck
2020-12-04  9:30     ` David Hildenbrand
2020-12-07  8:10     ` ganqixin
2020-12-08 16:10   ` Cornelia Huck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201204081209.360524-2-ganqixin@huawei.com \
    --to=ganqixin@huawei.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=euler.robot@huawei.com \
    --cc=kuhn.chenqun@huawei.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-trivial@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=zhang.zhanghailiang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.