The patch titled ptrace_stop: fix the race with ptrace detach+attach has been removed from the -mm tree. Its filename was ptrace_stop-fix-the-race-with-ptrace-detachattach.patch This patch was dropped because it was merged into mainline or a subsystem tree The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: ptrace_stop: fix the race with ptrace detach+attach From: Oleg Nesterov <oleg@xxxxxxxxxx> If the tracer went away (may_ptrace_stop() failed), ptrace_stop() drops tasklist and then changes the ->state from TASK_TRACED to TASK_RUNNING. This can fool another tracer which attaches to us in between. Change the ->state under tasklist_lock to ensure that ptrace_check_attach() can't wrongly succeed. Also, remove the unnecessary mb(). Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> Acked-by: Roland Dreier <rolandd@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/signal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff -puN kernel/signal.c~ptrace_stop-fix-the-race-with-ptrace-detachattach kernel/signal.c --- a/kernel/signal.c~ptrace_stop-fix-the-race-with-ptrace-detachattach +++ a/kernel/signal.c @@ -1638,11 +1638,11 @@ static void ptrace_stop(int exit_code, i } else { /* * By the time we got the lock, our tracer went away. - * Don't stop here. + * Don't drop the lock yet, another tracer may come. */ - read_unlock(&tasklist_lock); - set_current_state(TASK_RUNNING); + __set_current_state(TASK_RUNNING); current->exit_code = nostop_code; + read_unlock(&tasklist_lock); } /* _ Patches currently in -mm which might be from oleg@xxxxxxxxxx are origin.patch revert-proc-fix-the-threaded-proc-self.patch procfs-task-exe-symlink.patch procfs-task-exe-symlink-fix.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