lkml.org 
[lkml]   [2005]   [Oct]   [11]   [last100]   RSS-feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Complete thread (EXPERIMENTAL)
Patch in this message
/
FromRoland McGrath <>
Subject[PATCH] wait4 PTRACE_ATTACH race fix
DateMon, 10 Oct 2005 22:05:26 -0700 (PDT)
Digg This
Back about a year ago when I last fiddled heavily with the do_wait code, I was thinking too hard about the wrong thing and I now think I introduced a bug whose inverse thought I was fixing. Apparently noone was looking too hard over much shoulder, so as to cite my bogus reasoning at the time. In the race condition when PTRACE_ATTACH is about to steal a child and then the child hits a tracing event (what my_ptrace_child checks for), the real parent does need to set its flag noting it has some eligible live children. Otherwise a spurious ECHILD error is possible, since the child in question is not yet on the ptrace_children list.

Signed-off-by: Roland McGrath <roland@redhat.com>

[view this diff only]
--- linux-2.6/kernel/exit.c
+++ linux-2.6/kernel/exit.c
@@ -1370,6 +1370,15 @@ repeat:
 
 			switch (p->state) {
 			case TASK_TRACED:
+				/*
+				 * When we hit the race with PTRACE_ATTACH,
+				 * we will not report this child.  But the
+				 * race means it has not yet been moved to
+				 * our ptrace_children list, so we need to
+				 * set the flag here to avoid a spurious ECHILD
+				 * when the race happens with the only child.
+				 */
+				flag = 1;
 				if (!my_ptrace_child(p))
 					continue;
 				/*FALLTHROUGH*/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
ISP Services
Valid XHTML 1.0!\ /
Valid CSS! Last update: 2005-10-11 05:08    [W:0.102 / U:0.180 seconds]
©2003-2005 Jasper Spaans