aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/ia32
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/x86/ia32
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/x86/ia32')
-rw-r--r--arch/x86/ia32/ia32_signal.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index a69245ba27e3..fa54410c6666 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -127,18 +127,8 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from)
127asmlinkage long sys32_sigsuspend(int history0, int history1, old_sigset_t mask) 127asmlinkage long sys32_sigsuspend(int history0, int history1, old_sigset_t mask)
128{ 128{
129 sigset_t blocked; 129 sigset_t blocked;
130
131 current->saved_sigmask = current->blocked;
132
133 mask &= _BLOCKABLE;
134 siginitset(&blocked, mask); 130 siginitset(&blocked, mask);
135 set_current_blocked(&blocked); 131 return sigsuspend(&blocked);
136
137 current->state = TASK_INTERRUPTIBLE;
138 schedule();
139
140 set_restore_sigmask();
141 return -ERESTARTNOHAND;
142} 132}
143 133
144asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr, 134asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr,