[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH semi-urgent v2] linux-user: Fix exit syscall with QO
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH semi-urgent v2] linux-user: Fix exit syscall with QOM CPU |
Date: |
Sun, 15 Apr 2012 18:51:01 +0200 |
For QOM'ified CPUs we cannot g_free() CPUArchState, we must
object_delete() the object it is embedded into.
Fixes LP#982321 (invalid free() while executing pacman with qemu-arm).
Reported-by: Serge Schneider <address@hidden>
Reported-by: Russell Keith Davis <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Tested-by: Serge Schneider <address@hidden>
Tested-by: Russell Keith Davis <address@hidden>
---
Blue, can you please apply this fix before more targets get converted and
run into regressions? Thanks! (ppc PULL coming up)
linux-user/syscall.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 8a92162..7128618 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5045,7 +5045,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long
arg1,
NULL, NULL, 0);
}
thread_env = NULL;
+#ifdef ENV_GET_CPU
+ object_delete(OBJECT(ENV_GET_CPU(cpu_env)));
+#else
g_free(cpu_env);
+#endif
g_free(ts);
pthread_exit(NULL);
}
--
1.7.7