ptrace_check_attach() forgets to check we are the tracer, check ->parent.
We can do this without tasklist_lock.

---

--- PU/kernel/ptrace.c~02_CHECK_ATTACH  2009-08-13 15:34:29.000000000 +0200
+++ PU/kernel/ptrace.c  2009-08-13 17:04:49.000000000 +0200
@@ -576,6 +576,9 @@ int ptrace_check_attach(struct task_stru
        struct utrace_examiner exam;
        int ret;
 
+       if (child->parent != current)
+               return -ESRCH;
+
        engine = utrace_attach_task(child, UTRACE_ATTACH_MATCH_OPS,
                                    &ptrace_utrace_ops, NULL);
        if (IS_ERR(engine))

Reply via email to