[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090425172524.GA3432@redhat.com>
Date: Sat, 25 Apr 2009 19:25:24 +0200
From: Oleg Nesterov <oleg@...hat.com>
To: David Howells <dhowells@...hat.com>
Cc: Roland McGrath <roland@...hat.com>,
Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org, James Morris <jmorris@...ei.org>,
Hugh Dickins <hugh@...itas.com>
Subject: Re: ptrace && cred_exec_mutex (Was: [PATCH] ptrace:
tracehook_unsafe_exec: remove the stale comment)
On 04/25, David Howells wrote:
>
> Oleg Nesterov <oleg@...hat.com> 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(¤t->cred_exec_mutex);
> ...
> }
>
> And:
>
> int do_execve(...)
> {
> ...
> retval = mutex_lock_interruptible(¤t->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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists