aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/signal_32.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2006-02-01 06:05:58 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-01 11:53:19 -0500
commit4a41cdf9788f14bb120ad06d9ce17ca05fd72f03 (patch)
treec24e51f6f93656d50bc6624def6bed0a8e50164a /arch/powerpc/kernel/signal_32.c
parente61997881e0402aedbfad8696e369568a0583f14 (diff)
[PATCH] powerpc: Fix sigmask handling in sys_sigsuspend.
Better save the sigmask instead of throwing it away so it can be restored. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/powerpc/kernel/signal_32.c')
-rw-r--r--arch/powerpc/kernel/signal_32.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
index 3747ab0dac3f..c6d0595da6b5 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -254,11 +254,9 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs);
254 */ 254 */
255long sys_sigsuspend(old_sigset_t mask) 255long sys_sigsuspend(old_sigset_t mask)
256{ 256{
257 sigset_t saveset;
258
259 mask &= _BLOCKABLE; 257 mask &= _BLOCKABLE;
260 spin_lock_irq(&current->sighand->siglock); 258 spin_lock_irq(&current->sighand->siglock);
261 saveset = current->blocked; 259 current->saved_sigmask = current->blocked;
262 siginitset(&current->blocked, mask); 260 siginitset(&current->blocked, mask);
263 recalc_sigpending(); 261 recalc_sigpending();
264 spin_unlock_irq(&current->sighand->siglock); 262 spin_unlock_irq(&current->sighand->siglock);