Skip to content

Commit

Permalink
ptrace: Collapse ptrace_untrace() into __ptrace_unlink()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Tejun Heo committed Mar 23, 2011
1 parent d79fdd6 commit e3bd058
Showing 1 changed file with 15 additions and 25 deletions.
40 changes: 15 additions & 25 deletions kernel/ptrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
/*
Expand All @@ -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..
*/
Expand Down

0 comments on commit e3bd058

Please sign in to comment.