The patch titled signal: introduce retarget_shared_pending() has been removed from the -mm tree. Its filename was signal-introduce-retarget_shared_pending.patch This patch was dropped because an updated version will be merged The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: signal: introduce retarget_shared_pending() From: Oleg Nesterov <oleg@xxxxxxxxxx> No functional changes. Move the notify-other-threads code from exit_signals() to the new helper, retarget_shared_pending(). Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> Acked-by: Tejun Heo <tj@xxxxxxxxxx> Cc: "Nikita V. Youshchenko" <nyoushchenko@xxxxxxxxxx> Reviewed-by: Matt Fleming <matt@xxxxxxxxxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/signal.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff -puN kernel/signal.c~signal-introduce-retarget_shared_pending kernel/signal.c --- a/kernel/signal.c~signal-introduce-retarget_shared_pending +++ a/kernel/signal.c @@ -2198,10 +2198,25 @@ relock: return signr; } +/* + * It could be that complete_signal() picked us to notify about the + * group-wide signal. Another thread should be notified now to take + * the signal since we will not. + */ +static void retarget_shared_pending(struct task_struct *tsk) +{ + struct task_struct *t; + + t = tsk; + while_each_thread(tsk, t) { + if (!signal_pending(t) && !(t->flags & PF_EXITING)) + recalc_sigpending_and_wake(t); + } +} + void exit_signals(struct task_struct *tsk) { int group_stop = 0; - struct task_struct *t; if (thread_group_empty(tsk) || signal_group_exit(tsk->signal)) { tsk->flags |= PF_EXITING; @@ -2217,14 +2232,7 @@ void exit_signals(struct task_struct *ts if (!signal_pending(tsk)) goto out; - /* - * It could be that __group_complete_signal() choose us to - * notify about group-wide signal. Another thread should be - * woken now to take the signal since we will not. - */ - for (t = tsk; (t = next_thread(t)) != tsk; ) - if (!signal_pending(t) && !(t->flags & PF_EXITING)) - recalc_sigpending_and_wake(t); + retarget_shared_pending(tsk); if (unlikely(tsk->group_stop & GROUP_STOP_PENDING) && task_participate_group_stop(tsk)) _ Patches currently in -mm which might be from oleg@xxxxxxxxxx are linux-next.patch ptrace-fix-signal-wait_chldexit-usage-in-task_clear_group_stop_trapping.patch cgroups-read-write-lock-clone_thread-forking-per-threadgroup.patch cgroups-add-per-thread-subsystem-callbacks.patch cgroups-make-procs-file-writable.patch cgroups-use-flex_array-in-attach_proc.patch asm-generic-ptraceh-start-a-common-low-level-ptrace-helper.patch blackfin-convert-to-asm-generic-ptraceh.patch x86-convert-to-asm-generic-ptraceh.patch sh-convert-to-asm-generic-ptraceh.patch kgdbts-unify-generalize-gdb-breakpoint-adjustment.patch signal-retarget_shared_pending-consider-shared-unblocked-signals-only.patch signal-retarget_shared_pending-optimize-while_each_thread-loop.patch signal-sigprocmask-narrow-the-scope-of-siglock.patch signal-sigprocmask-should-do-retarget_shared_pending.patch x86-signal-handle_signal-should-use-set_current_blocked.patch x86-signal-sys_rt_sigreturn-should-use-set_current_blocked.patch signal-cleanup-sys_rt_sigprocmask.patch fs-execc-provide-the-correct-process-pid-to-the-pipe-helper.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html