diff options
Diffstat (limited to 'arch/mips/kernel/signal.c')
-rw-r--r-- | arch/mips/kernel/signal.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index d5a338a1739c..17f6ee30ad0d 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -255,15 +255,7 @@ asmlinkage int sys_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
255 | uset = (sigset_t __user *) regs.regs[4]; | 255 | uset = (sigset_t __user *) regs.regs[4]; |
256 | if (copy_from_user(&newset, uset, sizeof(sigset_t))) | 256 | if (copy_from_user(&newset, uset, sizeof(sigset_t))) |
257 | return -EFAULT; | 257 | return -EFAULT; |
258 | sigdelsetmask(&newset, ~_BLOCKABLE); | 258 | return sigsuspend(&newset); |
259 | |||
260 | current->saved_sigmask = current->blocked; | ||
261 | set_current_blocked(&newset); | ||
262 | |||
263 | current->state = TASK_INTERRUPTIBLE; | ||
264 | schedule(); | ||
265 | set_thread_flag(TIF_RESTORE_SIGMASK); | ||
266 | return -ERESTARTNOHAND; | ||
267 | } | 259 | } |
268 | #endif | 260 | #endif |
269 | 261 | ||
@@ -281,15 +273,7 @@ asmlinkage int sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
281 | unewset = (sigset_t __user *) regs.regs[4]; | 273 | unewset = (sigset_t __user *) regs.regs[4]; |
282 | if (copy_from_user(&newset, unewset, sizeof(newset))) | 274 | if (copy_from_user(&newset, unewset, sizeof(newset))) |
283 | return -EFAULT; | 275 | return -EFAULT; |
284 | sigdelsetmask(&newset, ~_BLOCKABLE); | 276 | return sigsuspend(&newset); |
285 | |||
286 | current->saved_sigmask = current->blocked; | ||
287 | set_current_blocked(&newset); | ||
288 | |||
289 | current->state = TASK_INTERRUPTIBLE; | ||
290 | schedule(); | ||
291 | set_thread_flag(TIF_RESTORE_SIGMASK); | ||
292 | return -ERESTARTNOHAND; | ||
293 | } | 277 | } |
294 | 278 | ||
295 | #ifdef CONFIG_TRAD_SIGNALS | 279 | #ifdef CONFIG_TRAD_SIGNALS |