Re: [PATCH 2/3] ptrace: cleanup check/set of PT_PTRACED duringattach

From: Oleg Nesterov
Date: Wed May 06 2009 - 19:36:21 EST


On 05/06, Ingo Molnar wrote:
>
> * Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
>
> > ptrace_attach() and ptrace_traceme() are the last functions which
> > look as if the untraced task can have task->ptrace != 0, this must
> > not be possible. Change the code to just check ->ptrace != 0 and
> > s/|=/=/ to set PT_PTRACED.
> >
> > Also, a couple of trivial whitespace cleanups in ptrace_attach().
> >
> > And move ptrace_traceme() up near ptrace_attach() to keep them
> > close to each other.
>
> btw., while at it, please also fix the typos in
> include/linux/ptrace.h's PT_* flags section:
>
> /*
> * Ptrace flags
> *
> * The owner ship rules for task->ptrace which holds the ptrace
> * flags is simple. When a task is running it owns it's task->ptrace
> * flags. When the a task is stopped the ptracer owns task->ptrace.
> */
>
> s/owner ship/ownership
> s/it's/its

Yes, thanks.

We should change this comment anyway, because it is not right.

The only case when a task owns (iow, can change it safely) its ->ptrace
is: it is running _and_ traced. I think this is what the comment tried
to say.

But this doesn't really matter, because afaics the correct comment
should say: the task should never touch its ->ptrace, ptracer always
owns it.

There is only one exception afaics, de_thread() or do_wait() can call
release_task()->ptrace_unlink() and clear ->ptrace on behalve of
another (not ptracer) task.

Roland, what do you think?

Oleg.

--
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/