From: Ilya Leoshkevich Date: Thu, 17 Oct 2024 12:54:43 +0000 (+0200) Subject: linux-user/ppc: Fix sigmask endianness issue in sigreturn X-Git-Tag: v8.2.8~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7ab3aff995d991c7601da269bb40d4a43efbd362;p=thirdparty%2Fqemu.git 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 Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-ID: <20241017125811.447961-2-iii@linux.ibm.com> Signed-off-by: Richard Henderson (cherry picked from commit 8704132805cf7a3259d1c5a073b3c2b92afa2616) Signed-off-by: Michael Tokarev --- diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index 7e7302823b0..6203a8d8d64 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -627,7 +627,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);