Messages in this thread | | | Date | Tue, 26 Aug 2008 16:04:15 +0200 | From | Pierre Morel <> | Subject | Re: [RFC] [Patch 1/1] [Self Ptrace] System call notification with self_ptrace |
| |
Hello Oleg,
Oleg Nesterov wrote: > On 08/25, Pierre Morel wrote: > >> @@ -550,6 +550,23 @@ asmlinkage long sys_ptrace(long request, >> goto out; >> } >> >> + if (request == PTRACE_SELF_ON) { >> + task_lock(current); >> + set_thread_flag(TIF_SYSCALL_TRACE); >> + current->ptrace |= PT_SELF; >> > > I didn't read the whole patch, but this sets PT_SELF without PT_PTRACED > (and without ptrace_attach). > Yes it is the way it is intended to work. PT_SELF and other ptrace requests are not correlated, I use the ptrace infrastructure to take advantage of the existing system call interception framework. > We have some "->ptrace != 0" checks which can misunderstand this. Just > for example, suppose that the task does sys_ptrace(PTRACE_SELF_ON) and > then its parent dies. I guess in that case forget_original_parent() > will hit BUG_ON(p->ptrace), no? > > Yes you are right, I will take care of those cases. I have the choice between:
- tracking all references to the ptrace flags and add a test for PT_SELF or a mask.
- add a dedicated task_struct entry to hold the PT_SELF flag
The second solution seems easier, simpler and more readable but extends the task struct.
What do you think is the best way to do it?
> Oleg. > > Thanks,
Pierre
-- ============= Pierre Morel RTOS and Embedded Linux
| |