summary refs log tree commit diff stats
path: root/linux-user/openrisc/signal.c
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2021-04-25 19:53:11 -0700
committerLaurent Vivier <laurent@vivier.eu>2021-05-15 21:43:23 +0200
commit56384cf3adaeb15bab479be328605e301ae253f2 (patch)
tree21e7e2d6cd96a0b2da2879ea30488b6e39845356 /linux-user/openrisc/signal.c
parent92bad948367c4b8a58f6bb81b45750f1d583f274 (diff)
downloadfocaccia-qemu-56384cf3adaeb15bab479be328605e301ae253f2.tar.gz
focaccia-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/openrisc/signal.c')
-rw-r--r--linux-user/openrisc/signal.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/linux-user/openrisc/signal.c b/linux-user/openrisc/signal.c
index 232ad82b98..86f94d7f76 100644
--- a/linux-user/openrisc/signal.c
+++ b/linux-user/openrisc/signal.c
@@ -158,10 +158,7 @@ long do_rt_sigreturn(CPUOpenRISCState *env)
     set_sigmask(&set);
 
     restore_sigcontext(env, &frame->uc.tuc_mcontext);
-    if (do_sigaltstack(frame_addr + offsetof(target_rt_sigframe, uc.tuc_stack),
-                       0, frame_addr) == -EFAULT) {
-        goto badframe;
-    }
+    target_restore_altstack(&frame->uc.tuc_stack, frame_addr);
 
     unlock_user_struct(frame, frame_addr, 0);
     return cpu_get_gpr(env, 11);