Re: How to lock current->signal->tty

Stephen Smalley
2006-08-08T17:42:21Z

On Tue, 2006-08-08 at 18:43 +0100, Alan Cox wrote:
> Ar Maw, 2006-08-08 am 13:11 -0400, ysgrifennodd Stephen Smalley:
> > Does this look sane? Or do we need a common helper factored from
> > disassociate_ctty()? Why is the locking different for TIOCNOTTY in the
> > non-leader case?
>
> The non-leader case for TIOCNOTTY in the base kernel is different
> because it is wrong and I've fixed that one.
>
> If you can factor disassociate_ctty out to do what you need I'd prefer
> that path so the tty locking actually ends up in the tty layer.
>
> > + mutex_lock(&tty_mutex);
> > + tty = current->signal->tty;
> > if (tty) {
> > file_list_lock();
>
> Looks sane and the lock ordering matches vhangup() which may actually
> also do what you want - I'm not 100% sure I follow what SELinux tries to
> do here.

SELinux is just revalidating access to the tty when the task changes
contexts upon execve, and resetting the tty if the task is no longer
allowed to use it. Likewise with the open file descriptors that would
be inherited. No clearing of the ttys of other tasks required as far as
SELinux is concerned, although that might not fit with normal semantics.

--
Stephen Smalley
National Security Agency