Messages in this thread | | | Date | Thu, 7 May 2009 01:30:27 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 2/3] ptrace: cleanup check/set of PT_PTRACED during attach |
| |
On 05/06, Ingo Molnar wrote: > > * Oleg Nesterov <oleg@redhat.com> 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.
| |