ptrace: Collapse ptrace_untrace() into __ptrace_unlink()
authorTejun Heo <tj@kernel.org>
Wed, 23 Mar 2011 09:37:01 +0000 (10:37 +0100)
committerTejun Heo <tj@kernel.org>
Wed, 23 Mar 2011 09:37:01 +0000 (10:37 +0100)
Remove the extra task_is_traced() check in __ptrace_unlink() and
collapse ptrace_untrace() into __ptrace_unlink().  This is to prepare
for further changes.

While at it, drop the comment on top of ptrace_untrace() and convert
__ptrace_unlink() comment to docbook format.  Detailed comment will be
added by the next patch.

This patch doesn't cause any visible behavior changes.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Oleg Nesterov <oleg@redhat.com>
kernel/ptrace.c

index 745fc2dd00c591e24f7cae10afe2017e77d48a76..e6098434b5335090f91e831f97bd8de42d9d0fea 100644 (file)
@@ -37,15 +37,23 @@ void __ptrace_link(struct task_struct *child, struct task_struct *new_parent)
        child->parent = new_parent;
 }
 
-/*
- * Turn a tracing stop into a normal stop now, since with no tracer there
- * would be no way to wake it up with SIGCONT or SIGKILL.  If there was a
- * signal sent that would resume the child, but didn't because it was in
- * TASK_TRACED, resume it now.
- * Requires that irqs be disabled.
+/**
+ * __ptrace_unlink - unlink ptracee and restore its execution state
+ * @child: ptracee to be unlinked
+ *
+ * Remove @child from the ptrace list, move it back to the original parent.
+ *
+ * CONTEXT:
+ * write_lock_irq(tasklist_lock)
  */
-static void ptrace_untrace(struct task_struct *child)
+void __ptrace_unlink(struct task_struct *child)
 {
+       BUG_ON(!child->ptrace);
+
+       child->ptrace = 0;
+       child->parent = child->real_parent;
+       list_del_init(&child->ptrace_entry);
+
        spin_lock(&child->sighand->siglock);
        if (task_is_traced(child)) {
                /*
@@ -69,24 +77,6 @@ static void ptrace_untrace(struct task_struct *child)
        spin_unlock(&child->sighand->siglock);
 }
 
-/*
- * unptrace a task: move it back to its original parent and
- * remove it from the ptrace list.
- *
- * Must be called with the tasklist lock write-held.
- */
-void __ptrace_unlink(struct task_struct *child)
-{
-       BUG_ON(!child->ptrace);
-
-       child->ptrace = 0;
-       child->parent = child->real_parent;
-       list_del_init(&child->ptrace_entry);
-
-       if (task_is_traced(child))
-               ptrace_untrace(child);
-}
-
 /*
  * Check that we have indeed attached to the thing..
  */