diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2007-10-17 08:27:24 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 17:42:54 +0200 |
commit | 13fbcb731220341537131b32cf01b1e70df7206d (patch) | |
tree | be6bd965e921b0918eb7b55626a0196915302f07 /kernel/signal.c | |
parent | exec: RT sub-thread can livelock and monopolize CPU on exec (diff) | |
download | linux-13fbcb731220341537131b32cf01b1e70df7206d.tar.xz linux-13fbcb731220341537131b32cf01b1e70df7206d.zip |
do_sigaction: don't worry about signal_pending()
do_sigaction() returns -ERESTARTNOINTR if signal_pending(). The comment says:
* If there might be a fatal signal pending on multiple
* threads, make sure we take it before changing the action.
I think this is not needed. We should only worry about SIGNAL_GROUP_EXIT case,
bit it implies a pending SIGKILL which can't be cleared by do_sigaction.
Kill this special case.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 90e2efad33ae..2124ffadcfde 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2294,15 +2294,6 @@ int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact) k = ¤t->sighand->action[sig-1]; spin_lock_irq(¤t->sighand->siglock); - if (signal_pending(current)) { - /* - * If there might be a fatal signal pending on multiple - * threads, make sure we take it before changing the action. - */ - spin_unlock_irq(¤t->sighand->siglock); - return -ERESTARTNOINTR; - } - if (oact) *oact = *k; |