linux/drivers/tty
Jiri Slaby b81273a132 TTY: do not reset master's packet mode
Now that login from util-linux is forced to drop all references to a
TTY which it wants to hangup (to reach reference count 1) we are
seeing issues with telnet. When login closes its last reference to the
slave PTY, it also resets packet mode on the *master* side. And we
have a race here.

What telnet does is fork+exec of `login'. Then there are two
scenarios:
* `login' closes the slave TTY and resets thus master's packet mode,
  but even now telnet properly sets the mode, or
* `telnetd' sets packet mode on the master, `login' closes the slave
  TTY and resets master's packet mode.

The former case is OK. However the latter happens in much more cases,
by the order of magnitude to be precise. So when one tries to login to
such a messed telnet setup, they see the following:
inux login:
            ogin incorrect

Note the missing first letters -- telnet thinks it is still in the
packet mode, so when it receives "linux login" from `login', it
considers "l" as the type of the packet and strips it.

SuS does not mention how the implementation should behave. Both BSDs I
checked (Free and Net) do not reset the flag upon the last close.

By this I am resurrecting an old bug, see References. We are hitting
it regularly now, i.e. with updated util-linux, ergo login.

Here, I am changing a behavior introduced back in 2.1 times. It would
better have a long time testing before goes upstream.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Bryan Mason <bmason@redhat.com>
References: https://lkml.org/lkml/2009/11/11/223
References: https://bugzilla.redhat.com/show_bug.cgi?id=504703
References: https://bugzilla.novell.com/show_bug.cgi?id=797042
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-15 22:49:36 -08:00
..
hvc TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ipwireless TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial serial: 8250_pci: remove __devexit usage 2013-01-15 22:44:48 -08:00
vt TTY: switch tty_schedule_flip 2013-01-15 22:43:15 -08:00
amiserial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
bfin_jtag_comm.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
cyclades.c cyclades: push down tty_port_tty_get 2013-01-15 22:43:15 -08:00
ehv_bytechan.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
isicom.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
Kconfig Merge branch 'for-upstream' of http://github.com/agraf/linux-2.6 into queue 2012-10-10 19:03:54 -03:00
Makefile
moxa.c TTY: switch tty_schedule_flip 2013-01-15 22:43:15 -08:00
moxa.h
mxser.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mxser.h
n_gsm.c Revert "n_gsm.c: add tx_lock in gsm_send" 2013-01-15 22:48:15 -08:00
n_hdlc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
n_r3964.c tty: localise the lock 2012-08-10 12:55:47 -07:00
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c tty: add missing newlines to WARN_RATELIMIT 2012-10-25 11:30:27 -07:00
nozomi.c TTY: nozomi, remove dead code 2013-01-15 22:43:16 -08:00
pty.c TTY: do not reset master's packet mode 2013-01-15 22:49:36 -08:00
rocket_int.h
rocket.c tty: add parenthesis to macro POLL_PERIOD in rocket.c 2013-01-15 22:49:36 -08:00
rocket.h
synclink_gt.c TTY: synclink, remove unneeded tests 2013-01-15 22:43:15 -08:00
synclink.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
synclinkmp.c TTY: synclink, remove unneeded tests 2013-01-15 22:43:15 -08:00
sysrq.c mm, oom: ensure sysrq+f always passes valid zonelist 2012-11-15 17:13:48 -08:00
tty_audit.c TTY: audit, stop accessing tty->icount 2012-10-22 16:50:54 -07:00
tty_buffer.c TTY: switch tty_schedule_flip 2013-01-15 22:43:15 -08:00
tty_io.c tty: Fix comments that reference BKL, eventd, old paths 2013-01-15 21:57:44 -08:00
tty_ioctl.c tty: pty - Move TIOCPKT handling into pty.c 2012-10-25 12:07:18 -07:00
tty_ldisc.c tty: Use raw spin lock to protect TTY ldisc administration 2012-10-24 11:37:02 -07:00
tty_mutex.c tty: tty_mutex.c: Fixed coding style warning (using printk) 2012-10-24 11:34:51 -07:00
tty_port.c TTY: introduce tty_port_destroy 2012-11-15 17:20:58 -08:00