aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-05-21 21:42:32 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-05-21 23:52:30 -0400
commit68f3f16d9ad0f1e28ab3fd0001ab5798c41f15a3 (patch)
treefd023109413f5eb28b364663fdf4bf2eabca47d4 /arch/s390
parentbf67f3a5c456a18f2e8d062f7e88506ef2cd9837 (diff)
new helper: sigsuspend()
guts of saved_sigmask-based sigsuspend/rt_sigsuspend. Takes kernel sigset_t *. Open-coded instances replaced with calling it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/kernel/signal.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 8a4e2b760d56..f626232e216c 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -59,15 +59,8 @@ typedef struct
59SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask) 59SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask)
60{ 60{
61 sigset_t blocked; 61 sigset_t blocked;
62
63 current->saved_sigmask = current->blocked;
64 mask &= _BLOCKABLE;
65 siginitset(&blocked, mask); 62 siginitset(&blocked, mask);
66 set_current_blocked(&blocked); 63 return sigsuspend(&blocked);
67 set_current_state(TASK_INTERRUPTIBLE);
68 schedule();
69 set_restore_sigmask();
70 return -ERESTARTNOHAND;
71} 64}
72 65
73SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act, 66SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act,