[PATCH 79] ptrace_detach_task: don't use engine ptr before IS_ERR(engine)

Oleg Nesterov oleg at redhat.com
Sat Oct 10 16:16:56 UTC 2009


"[PATCH 76] fold detach_signal() into ptrace_detach_task()" was buggy,
we read engine->date before checking IS_ERR(engine).

---

 kernel/ptrace.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- PU/kernel/ptrace.c~79_FIX_DETACH_ENGINE_DEREF	2009-10-10 17:06:11.000000000 +0200
+++ PU/kernel/ptrace.c	2009-10-10 17:09:34.000000000 +0200
@@ -90,7 +90,6 @@ static struct utrace_engine *ptrace_look
 static void ptrace_detach_task(struct task_struct *tracee, int sig)
 {
 	struct utrace_engine *engine = ptrace_lookup_engine(tracee);
-	struct ptrace_context *context = ptrace_context(engine);
 	enum utrace_resume_action action = UTRACE_DETACH;
 	int err;
 
@@ -98,6 +97,8 @@ static void ptrace_detach_task(struct ta
 		return;
 
 	if (sig) {
+		struct ptrace_context *context = ptrace_context(engine);
+
 		switch (get_stop_event(context)) {
 		case PTRACE_EVENT_SYSCALL_ENTRY:
 		case PTRACE_EVENT_SYSCALL_EXIT:




More information about the utrace-devel mailing list