Re: [PATCH 3/4] ptrace: reintroduce __ptrace_detach() as a callee ofptrace_exit()

From: Roland McGrath
Date: Wed Feb 04 2009 - 20:24:39 EST


> No functional changes, preparation for the next patch.
>
> Move the "should we release this child" logic into the separate handler,
> __ptrace_detach().

My inclination is to use bool in new code for true/false return values,
but I don't really care.

Please canonicalize the comment formatting for your new comments.

The preserved comment no longer makes sense, there is no "dead list" in
that function. Make it a coherent comment at the top that explains the
return value.

Given its content, this function now better belongs in ptrace.c, I think.


Thanks,
Roland

=====

/*
* Called with tasklist_lock held for writing.
* Unlink a traced task, and clean it up if it was a traced zombie.
* Return true if it needs to be reaped with release_task().
* (We can't call release_task() here because we already hold tasklist_lock.)
*
* If it's a zombie, our attachedness prevented normal parent notification
* or self-reaping. Do notification now if it would have happened earlier.
* If it should reap itself, return true.
*
* If it's our own child, there is no notification to do.
* But if our normal children self-reap, then this child
* was prevented by ptrace and we must reap it now.
*/
bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
{
__ptrace_unlink(p);

if (p->exit_state == EXIT_ZOMBIE) {
if (!task_detached(p) && thread_group_empty(p)) {
if (!same_thread_group(p->real_parent, tracer))
do_notify_parent(p, p->exit_signal);
else if (ignoring_children(tracer->sighand))
p->exit_signal = -1;
}
if (task_detached(p)) {
/*
* Mark it as in the process of being reaped.
*/
p->exit_state = EXIT_DEAD;
return true;
}
}

return false;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/