From ad7bdc42cc2f8d77b4f55985ccb974fa5e61ddc9 Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Sun, 30 Oct 2005 15:03:46 -0800 Subject: [PATCH] --- yaml --- r: 11919 b: refs/heads/master c: b0423a0d9cc836b2c3d796623cd19236bfedfe63 h: refs/heads/master i: 11917: 906b80b5b4c3ea6e52161433a811fd59899e0fe7 11915: 8d3abd9cb4c8e64b360bad696cb8d9a9f5b65b4c 11911: ff260eb48df53211ab87d4be460be0ba35264d08 11903: 06145c45d7c79b441e123bb795e8fb33c477f3f9 v: v3 --- [refs] | 2 +- trunk/kernel/signal.c | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 5fb074b54653..b8598e9345d0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ae6866c377943de73e2c95398ff0120516f167ce +refs/heads/master: b0423a0d9cc836b2c3d796623cd19236bfedfe63 diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index 1d8f84c5c6ee..1bf3c39d6109 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -879,11 +879,13 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) int ret; spin_lock_irqsave(&t->sighand->siglock, flags); - if (sigismember(&t->blocked, sig) || t->sighand->action[sig-1].sa.sa_handler == SIG_IGN) { + if (t->sighand->action[sig-1].sa.sa_handler == SIG_IGN) { t->sighand->action[sig-1].sa.sa_handler = SIG_DFL; + } + if (sigismember(&t->blocked, sig)) { sigdelset(&t->blocked, sig); - recalc_sigpending_tsk(t); } + recalc_sigpending_tsk(t); ret = specific_send_sig_info(sig, info, t); spin_unlock_irqrestore(&t->sighand->siglock, flags); @@ -893,15 +895,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) void force_sig_specific(int sig, struct task_struct *t) { - unsigned long int flags; - - spin_lock_irqsave(&t->sighand->siglock, flags); - if (t->sighand->action[sig-1].sa.sa_handler == SIG_IGN) - t->sighand->action[sig-1].sa.sa_handler = SIG_DFL; - sigdelset(&t->blocked, sig); - recalc_sigpending_tsk(t); - specific_send_sig_info(sig, SEND_SIG_FORCED, t); - spin_unlock_irqrestore(&t->sighand->siglock, flags); + force_sig_info(sig, SEND_SIG_FORCED, t); } /*