summaryrefslogtreecommitdiffstats
path: root/linux-user/sh4
diff options
context:
space:
mode:
authorRichard Henderson2021-04-26 04:53:11 +0200
committerLaurent Vivier2021-05-15 21:43:23 +0200
commit56384cf3adaeb15bab479be328605e301ae253f2 (patch)
tree21e7e2d6cd96a0b2da2879ea30488b6e39845356 /linux-user/sh4
parentlinux-user: Split out target_restore_altstack (diff)
downloadqemu-56384cf3adaeb15bab479be328605e301ae253f2.tar.gz
qemu-56384cf3adaeb15bab479be328605e301ae253f2.tar.xz
qemu-56384cf3adaeb15bab479be328605e301ae253f2.zip
linux-user: Use target_restore_altstack in all sigreturn
Note that target_restore_altstack uses the host memory pointer that we have already verified, so TARGET_EFAULT is not a possible return value. Note that using -EFAULT was a bug. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210426025334.1168495-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'linux-user/sh4')
-rw-r--r--linux-user/sh4/signal.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/linux-user/sh4/signal.c b/linux-user/sh4/signal.c
index 29c1ee30e6..684f18da58 100644
--- a/linux-user/sh4/signal.c
+++ b/linux-user/sh4/signal.c
@@ -323,12 +323,7 @@ long do_rt_sigreturn(CPUSH4State *regs)
set_sigmask(&blocked);
restore_sigcontext(regs, &frame->uc.tuc_mcontext);
-
- if (do_sigaltstack(frame_addr +
- offsetof(struct target_rt_sigframe, uc.tuc_stack),
- 0, get_sp_from_cpustate(regs)) == -EFAULT) {
- goto badframe;
- }
+ target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(regs));
unlock_user_struct(frame, frame_addr, 0);
return -TARGET_QEMU_ESIGRETURN;