linux/drivers/tty
Jiri Slaby 0c73c08ec7 TTY: ldisc, wait for ldisc infinitely in hangup
For /dev/console case, we do not kill all ldisc users. It's due to
redirected_tty_write test in __tty_hangup. In that case there still
might be a process waiting e.g. in n_tty_read for input.

We wait for such processes to disappear. The problem is that we use a
timeout. After this timeout, we continue closing the ldisc and start
freeing tty resources. It obviously leads to crashes when the other
process is woken.

So to fix this, we wait infinitely before reiniting the ldisc. (The
tiocsetd remains untouched -- times out after 5s.)

This is nicely reproducible with this run from shell:
  exec 0<>/dev/console 1<>/dev/console 2<>/dev/console
and stopping a getty like:
  systemctl stop serial-getty@ttyS0.service

The crash proper may be produced only under load or with constified
timing the same as for 92f6fa09b.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Dave Young <hidave.darkstar@gmail.com>
Cc: Dave Jones <davej@redhat.com>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Dmitriy Matrosov <sgf.dma@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-11-17 11:36:12 -08:00
..
hvc tty: hvc_dcc: Fix duplicate character inputs 2011-11-15 12:02:13 -08:00
ipwireless
serial Revert "tty/serial: Prevent drop of DCD on suspend for Tegra UARTs" 2011-11-15 16:01:09 -08:00
vt tty: Add export.h for EXPORT_SYMBOL/THIS_MODULE to exporters 2011-10-31 19:31:28 -04:00
amiserial.c
bfin_jtag_comm.c
cyclades.c
ehv_bytechan.c
isicom.c
Kconfig Merge branch 'for-linus' of git://github.com/richardweinberger/linux 2011-11-02 09:45:39 -07:00
Makefile
moxa.c
moxa.h
mxser.c
mxser.h
n_gsm.c
n_hdlc.c
n_r3964.c
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c
nozomi.c
pty.c Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty 2011-10-26 15:11:09 +02:00
rocket_int.h
rocket.c
rocket.h
synclink_gt.c
synclink.c
synclinkmp.c
sysrq.c
tty_audit.c
tty_buffer.c
tty_io.c Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty 2011-10-26 15:11:09 +02:00
tty_ioctl.c tty: Support compat_ioctl get/set termios_locked 2011-10-18 14:17:11 -07:00
tty_ldisc.c TTY: ldisc, wait for ldisc infinitely in hangup 2011-11-17 11:36:12 -08:00
tty_mutex.c
tty_port.c