diff options
author | Paul E. McKenney <paulmck@us.ibm.com> | 2005-10-30 15:03:46 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-30 17:37:32 -0800 |
commit | b0423a0d9cc836b2c3d796623cd19236bfedfe63 (patch) | |
tree | 21c6ebdc052b4e085aacb295b55c168bc60bcae2 | |
parent | ae6866c377943de73e2c95398ff0120516f167ce (diff) | |
download | linux-b0423a0d9cc836b2c3d796623cd19236bfedfe63.tar.gz linux-b0423a0d9cc836b2c3d796623cd19236bfedfe63.tar.bz2 linux-b0423a0d9cc836b2c3d796623cd19236bfedfe63.zip |
[PATCH] Remove duplicate code in signal.c
Combine a bit of redundant code between force_sig_info() and
force_sig_specific().
Signed-off-by: paulmck@us.ibm.com
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/signal.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 1d8f84c5c6ee..1bf3c39d6109 100644 --- a/kernel/signal.c +++ b/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); } /* |