diff options
Diffstat (limited to 'arch/mn10300/kernel/signal.c')
-rw-r--r-- | arch/mn10300/kernel/signal.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/arch/mn10300/kernel/signal.c b/arch/mn10300/kernel/signal.c index 690f4e9507d..50eb94a0582 100644 --- a/arch/mn10300/kernel/signal.c +++ b/arch/mn10300/kernel/signal.c | |||
@@ -38,17 +38,9 @@ | |||
38 | */ | 38 | */ |
39 | asmlinkage long sys_sigsuspend(int history0, int history1, old_sigset_t mask) | 39 | asmlinkage long sys_sigsuspend(int history0, int history1, old_sigset_t mask) |
40 | { | 40 | { |
41 | mask &= _BLOCKABLE; | 41 | sigset_t blocked; |
42 | spin_lock_irq(¤t->sighand->siglock); | 42 | siginitset(&blocked, mask); |
43 | current->saved_sigmask = current->blocked; | 43 | return sigsuspend(&blocked); |
44 | siginitset(¤t->blocked, mask); | ||
45 | recalc_sigpending(); | ||
46 | spin_unlock_irq(¤t->sighand->siglock); | ||
47 | |||
48 | current->state = TASK_INTERRUPTIBLE; | ||
49 | schedule(); | ||
50 | set_thread_flag(TIF_RESTORE_SIGMASK); | ||
51 | return -ERESTARTNOHAND; | ||
52 | } | 44 | } |
53 | 45 | ||
54 | /* | 46 | /* |