"[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:

Reply via email to