Re: ptrace && cred_exec_mutex (Was: [PATCH] ptrace:tracehook_unsafe_exec: remove the stale comment)

From: Oleg Nesterov
Date: Sat Apr 25 2009 - 13:31:08 EST


On 04/25, David Howells wrote:
>
> Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
>
> > Yes. Except it looks like ->cred_exec_mutex is never used in fact.
>
> I must to be missing something... I see that:
>
> int ptrace_attach(struct task_struct *task)
> {
> ...
> /* Protect exec's credential calculations against our interference;
> * SUID, SGID and LSM creds get determined differently under ptrace.
> */
> retval = mutex_lock_interruptible(&current->cred_exec_mutex);
> ...
> }
>
> And:
>
> int do_execve(...)
> {
> ...
> retval = mutex_lock_interruptible(&current->cred_exec_mutex);
> if (retval < 0)
> goto out_free;
> ...
> }

Sorry David, I was very unclear.

These 2 current's are different tasks, and hence we take to unrelated locks.

We can never block taking current->cred_exec_mutex because nobody else
touches this mutex, we always use current. This means this lock is "nop".

Unless I missed something, ptrace_attach() should take task->cred_exec_mutex.

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/