[PATCH] linux-user: fix memory leak when threads exit

kkhaike@gmail.com posted 1 patch 1 year, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220528115044.30813-1-kkhaike@gmail.com
Maintainers: Laurent Vivier <laurent@vivier.eu>
linux-user/syscall.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] linux-user: fix memory leak when threads exit
Posted by kkhaike@gmail.com 1 year, 11 months ago
From: kkHAIKE <kkhaike@gmail.com>

when call do_fork->cpu_copy->cpu_create, the return new cpu was not parent so refby '/unattached', so need add more object_unparent call to unref.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/866
Signed-off-by: kkHAIKE <kkhaike@gmail.com>
---
 linux-user/syscall.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f55cdebee5..c653897d32 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8567,6 +8567,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
             TaskState *ts = cpu->opaque;
 
             object_property_set_bool(OBJECT(cpu), "realized", false, NULL);
+            object_unparent(OBJECT(cpu));
             object_unref(OBJECT(cpu));
             /*
              * At this point the CPU should be unrealized and removed
-- 
2.32.1 (Apple Git-133)