Add patch to fix broken tty handling (rhbz 904182)

This commit is contained in:
Josh Boyer 2013-03-11 09:06:11 -04:00
parent e39dc443b8
commit a886d7d7b9
2 changed files with 73 additions and 1 deletions

View File

@ -0,0 +1,63 @@
From b81273a132177edd806476b953f6afeb17b786d5 Mon Sep 17 00:00:00 2001
From: Jiri Slaby <jslaby@suse.cz>
Date: Tue, 15 Jan 2013 23:26:22 +0100
Subject: [PATCH] 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>
---
drivers/tty/pty.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index 4ec11f3..40ff2bf 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -47,7 +47,6 @@ static void pty_close(struct tty_struct *tty, struct file *filp)
/* Review - krefs on tty_link ?? */
if (!tty->link)
return;
- tty->link->packet = 0;
set_bit(TTY_OTHER_CLOSED, &tty->link->flags);
wake_up_interruptible(&tty->link->read_wait);
wake_up_interruptible(&tty->link->write_wait);
--
1.8.1.2

View File

@ -62,7 +62,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
%global baserelease 207
%global baserelease 208
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@ -782,6 +782,9 @@ Patch24101: fix-destroy_conntrack-GPF.patch
#rhbz 917353
Patch24102: backlight_revert.patch
#rhbz 904182
Patch24103: TTY-do-not-reset-master-s-packet-mode.patch
# END OF PATCH DEFINITIONS
%endif
@ -1513,6 +1516,9 @@ ApplyPatch backlight_revert.patch -R
#Team Driver update
ApplyPatch team-net-next-update-20130307.patch
#rhbz 904182
ApplyPatch TTY-do-not-reset-master-s-packet-mode.patch
# END OF PATCH APPLICATIONS
%endif
@ -2370,6 +2376,9 @@ fi
# ||----w |
# || ||
%changelog
* Mon Mar 11 2013 Josh Boyer <jwboyer@redhat.com>
- Add patch to fix broken tty handling (rhbz 904182)
* Fri Mar 08 2013 Josh Boyer <jwboyer@redhat.com>
- Add turbostat and x86_engery_perf_policy debuginfo to kernel-tools-debuginfo