From 10f8f60a1512ece58b1360d466edaddbc860ce4a Mon Sep 17 00:00:00 2001 From: Matt Fleming Date: Fri, 23 Mar 2012 15:01:50 -0700 Subject: [PATCH] --- yaml --- r: 295143 b: refs/heads/master c: d982d5955e9033015a2cc119aa7c0a878e275964 h: refs/heads/master i: 295141: d35fad0c4388704c910fe61bc75d7840a32df74c 295139: 80ff48567ce57886e40ebc899f9851e41b8f86d5 295135: bf09ff03abbf8aba35d3a982f316b04248db34be v: v3 --- [refs] | 2 +- trunk/arch/um/kernel/signal.c | 20 ++++++-------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index f006547819af..198162ff9535 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f6adb9a6aec0ec9540e15f354e5cdec88b2aea33 +refs/heads/master: d982d5955e9033015a2cc119aa7c0a878e275964 diff --git a/trunk/arch/um/kernel/signal.c b/trunk/arch/um/kernel/signal.c index 8382e0b91e8b..fb12f4c5e649 100644 --- a/trunk/arch/um/kernel/signal.c +++ b/trunk/arch/um/kernel/signal.c @@ -67,15 +67,8 @@ static int handle_signal(struct pt_regs *regs, unsigned long signr, if (err) force_sigsegv(signr, current); - else { - spin_lock_irq(¤t->sighand->siglock); - sigorsets(¤t->blocked, ¤t->blocked, - &ka->sa.sa_mask); - if (!(ka->sa.sa_flags & SA_NODEFER)) - sigaddset(¤t->blocked, signr); - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); - } + else + block_sigmask(ka, signr); return err; } @@ -158,12 +151,11 @@ int do_signal(void) */ long sys_sigsuspend(int history0, int history1, old_sigset_t mask) { + sigset_t blocked; + mask &= _BLOCKABLE; - spin_lock_irq(¤t->sighand->siglock); - current->saved_sigmask = current->blocked; - siginitset(¤t->blocked, mask); - recalc_sigpending(); - spin_unlock_irq(¤t->sighand->siglock); + siginitset(&blocked, mask); + set_current_blocked(&blocked); current->state = TASK_INTERRUPTIBLE; schedule();