diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2024-10-17 14:54:43 +0200 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2024-11-10 11:10:00 +0300 |
commit | 1d6dee3e8a3b74add804c41fd7934a3dbb3290fa (patch) | |
tree | a8b7a75b86ef74bbc07ba1e95b029ff9a63fa15d /linux-user | |
parent | c363ebaa19c3de428982fd634f4acb89b240aa41 (diff) |
linux-user/ppc: Fix sigmask endianness issue in sigreturn
do_setcontext() copies the target sigmask without endianness handling
and then uses target_to_host_sigset_internal(), which expects a
byte-swapped one. Use target_to_host_sigset() instead.
Fixes: bcd4933a23f1 ("linux-user: ppc signal handling")
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20241017125811.447961-2-iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 8704132805cf7a3259d1c5a073b3c2b92afa2616)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/ppc/signal.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index 07729c1653..6968c817dc 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -617,7 +617,7 @@ static int do_setcontext(struct target_ucontext *ucp, CPUPPCState *env, int sig) if (!lock_user_struct(VERIFY_READ, mcp, mcp_addr, 1)) return 1; - target_to_host_sigset_internal(&blocked, &set); + target_to_host_sigset(&blocked, &set); set_sigmask(&blocked); restore_user_regs(env, mcp, sig); |