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

From: Pierre Morel
Date: Tue Aug 26 2008 - 10:08:31 EST


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

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