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>
---
linux-user/ppc/signal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c
index a1d8c0bccc1..24e5a02a782 100644
--- a/linux-user/ppc/signal.c
+++ b/linux-user/ppc/signal.c
@@ -628,7 +628,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);
--
2.47.0
On 17/10/24 09:54, Ilya Leoshkevich wrote: > 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. These function names are confusing. > Fixes: bcd4933a23f1 ("linux-user: ppc signal handling") > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> > --- > linux-user/ppc/signal.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c > index a1d8c0bccc1..24e5a02a782 100644 > --- a/linux-user/ppc/signal.c > +++ b/linux-user/ppc/signal.c > @@ -628,7 +628,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); > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 10/17/24 05:54, Ilya Leoshkevich wrote: > 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> > --- > linux-user/ppc/signal.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
© 2016 - 2024 Red Hat, Inc.