OSDN Git Service

target-ppc, tcg: fix usermode segfault with pthread_create()
authorSam Bobroff <sam.bobroff@au1.ibm.com>
Tue, 7 Feb 2017 03:21:39 +0000 (14:21 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Wed, 22 Feb 2017 00:28:28 +0000 (11:28 +1100)
commit2635531f2006bfb0f943ad25b41e176709b79b37
tree67b55bfae39fdab4ab67dfc32d162ff35d5db680
parentc09cec683b713d585b74825a911ee45338cb7778
target-ppc, tcg: fix usermode segfault with pthread_create()

Programs run under qemu-ppc64 on an x86_64 host currently segfault
if they use pthread_create() due to the adjustment made to the NIP in
commit bd6fefe71cec5a0c7d2be4ac96307f25db56abf9.

This patch changes cpu_loop() to set the NIP back to the
pre-incremented value before calling do_syscall(), which causes the
correct address to be used for the new thread and corrects the fault.

Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
linux-user/main.c