Re: [RFC] [Patch 1/1] [Self Ptrace] System call notification with self_ptrace

Pierre Morel
2008-08-26T14:08:29Z

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