summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/tty/tty_ldisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers/tty/tty_ldisc.c')
-rw-r--r--kernel/drivers/tty/tty_ldisc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/drivers/tty/tty_ldisc.c b/kernel/drivers/tty/tty_ldisc.c
index 629e3c865..9bee25cfa 100644
--- a/kernel/drivers/tty/tty_ldisc.c
+++ b/kernel/drivers/tty/tty_ldisc.c
@@ -417,6 +417,10 @@ EXPORT_SYMBOL_GPL(tty_ldisc_flush);
* they are not on hot paths so a little discipline won't do
* any harm.
*
+ * The line discipline-related tty_struct fields are reset to
+ * prevent the ldisc driver from re-using stale information for
+ * the new ldisc instance.
+ *
* Locking: takes termios_rwsem
*/
@@ -425,6 +429,9 @@ static void tty_set_termios_ldisc(struct tty_struct *tty, int num)
down_write(&tty->termios_rwsem);
tty->termios.c_line = num;
up_write(&tty->termios_rwsem);
+
+ tty->disc_data = NULL;
+ tty->receive_room = 0;
}
/**