diff options
Diffstat (limited to 'kernel/exit.c')
-rw-r--r-- | kernel/exit.c | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 8f3bf53a5b4d..2b332d170327 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -745,24 +745,6 @@ static void exit_notify(struct task_struct *tsk) | |||
745 | struct task_struct *t; | 745 | struct task_struct *t; |
746 | struct pid *pgrp; | 746 | struct pid *pgrp; |
747 | 747 | ||
748 | if (signal_pending(tsk) && !(tsk->signal->flags & SIGNAL_GROUP_EXIT) | ||
749 | && !thread_group_empty(tsk)) { | ||
750 | /* | ||
751 | * This occurs when there was a race between our exit | ||
752 | * syscall and a group signal choosing us as the one to | ||
753 | * wake up. It could be that we are the only thread | ||
754 | * alerted to check for pending signals, but another thread | ||
755 | * should be woken now to take the signal since we will not. | ||
756 | * Now we'll wake all the threads in the group just to make | ||
757 | * sure someone gets all the pending signals. | ||
758 | */ | ||
759 | spin_lock_irq(&tsk->sighand->siglock); | ||
760 | for (t = next_thread(tsk); t != tsk; t = next_thread(t)) | ||
761 | if (!signal_pending(t) && !(t->flags & PF_EXITING)) | ||
762 | recalc_sigpending_and_wake(t); | ||
763 | spin_unlock_irq(&tsk->sighand->siglock); | ||
764 | } | ||
765 | |||
766 | /* | 748 | /* |
767 | * This does two things: | 749 | * This does two things: |
768 | * | 750 | * |