From: Dmitry V. Levin Date: Wed, 4 Mar 2015 21:40:00 +0000 (+0000) Subject: s390: fix sigreturn decoding X-Git-Tag: v4.10~14 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=085411b806cc62efe0b0af15451f5ce84aef619b;p=strace s390: fix sigreturn decoding * signal.c (sys_sigreturn) [S390]: Fix signal mask decoding. --- diff --git a/signal.c b/signal.c index b3a8a20e..3437f02d 100644 --- a/signal.c +++ b/signal.c @@ -739,12 +739,17 @@ sys_sigreturn(struct tcb *tcp) #elif defined(S390) || defined(S390X) if (entering(tcp)) { long usp; - struct sigcontext sc; + long mask[NSIG / 8 / sizeof(long)]; if (upeek(tcp->pid, PT_GPR15, &usp) < 0) return 0; - if (umove(tcp, usp + __SIGNAL_FRAMESIZE, &sc) < 0) + if (umove(tcp, usp + __SIGNAL_FRAMESIZE, &mask) < 0) return 0; - tprintsigmask_addr(") (mask ", sc.oldmask); +# ifdef S390 + usp = mask[0]; + mask[0] = mask[1]; + mask[1] = usp; +# endif + tprintsigmask_addr(") (mask ", mask); } #elif defined I386 || defined X86_64 || defined X32 if (entering(tcp)) {