mirror of https://github.com/xqemu/xqemu.git
linux-user: Fix exit syscall with QOM CPU
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 <serge@xecdesign.com> Reported-by: Russell Keith Davis <russell@russelldavis.org> Signed-off-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Serge Schneider <serge@xecdesign.com> Tested-by: Russell Keith Davis <russell@russelldavis.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
da12872a09
commit
11ea409052
|
@ -5045,7 +5045,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
NULL, NULL, 0);
|
NULL, NULL, 0);
|
||||||
}
|
}
|
||||||
thread_env = NULL;
|
thread_env = NULL;
|
||||||
|
#ifdef ENV_GET_CPU
|
||||||
|
object_delete(OBJECT(ENV_GET_CPU(cpu_env)));
|
||||||
|
#else
|
||||||
g_free(cpu_env);
|
g_free(cpu_env);
|
||||||
|
#endif
|
||||||
g_free(ts);
|
g_free(ts);
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue