lkml.org 
[lkml]   [2008]   [Oct]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 0/2] SIGWINCH problem with terminal apps still alive
Sun, 12 Oct 2008 19:03:12 +0100 - Alan Cox <alan@lxorguk.ukuu.org.uk>:
> Then we end up with both using real_tty.
>
> > Anyway I think that you miss the point. Why using
> > real_tty->termios_mutex instead of tty->termios_mutex in
> > tty_do_resize
>
> To avoid deadlocks if you took both as you updated both structures.

Actually to avoid race and not valid winsize reading because
ioctl(TIOCGWINSZ) is done with tty == real_tty so we have to use this
mutex and not the other one.
What is more because we are using real_tty we could safely use only
real_tty->winsize and forget about master tty->winsize.

> > So it seems that tty->termios_mutex could point to different
> > location in different calls but real_tty->termios_mutex always
> > points to the same location.
>
> You've finally got there - we always work off real_tty. That is why we
> can safely use the mutex on the real_tty side.

typically ioctl(,TIOCSWINSZ,) is called on master side but
ioctl(,TIOCGWINSZ,) is called on slave side so tty is not the same in
both calls inside ioctl() in tty_io.c. Only real_tty variable has the
same value for the same master/slave pair. So we must use real_tty
mutex all the time because we not always work from the same side IMHO.

That is why I propose usage of real_tty in ioctl() handling:

case TIOCGWINSZ:
return tiocgwinsz(real_tty, p);


Regards

--
Adam Tlałka mailto:atlka@pg.gda.pl ^v^ ^v^ ^v^
System & Network Administration Group - - - ~~~~~~
Computer Center, Gdańsk University of Technology, Poland
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2008-10-12 21:05    [W:0.036 / U:6.828 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site