Commit 6460fbbf authored by Peter Hurley's avatar Peter Hurley Committed by Greg Kroah-Hartman

tty: WARN for attempted set_termios() of pty master

The pty master's termios should never be set; currently, all code
paths which call the driver's set_termios() method ensure that the
pty slave's termios is being set.
Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Reviewed-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a361858d
...@@ -477,7 +477,6 @@ static const struct tty_operations master_pty_ops_bsd = { ...@@ -477,7 +477,6 @@ static const struct tty_operations master_pty_ops_bsd = {
.flush_buffer = pty_flush_buffer, .flush_buffer = pty_flush_buffer,
.chars_in_buffer = pty_chars_in_buffer, .chars_in_buffer = pty_chars_in_buffer,
.unthrottle = pty_unthrottle, .unthrottle = pty_unthrottle,
.set_termios = pty_set_termios,
.ioctl = pty_bsd_ioctl, .ioctl = pty_bsd_ioctl,
.cleanup = pty_cleanup, .cleanup = pty_cleanup,
.resize = pty_resize, .resize = pty_resize,
...@@ -654,7 +653,6 @@ static const struct tty_operations ptm_unix98_ops = { ...@@ -654,7 +653,6 @@ static const struct tty_operations ptm_unix98_ops = {
.flush_buffer = pty_flush_buffer, .flush_buffer = pty_flush_buffer,
.chars_in_buffer = pty_chars_in_buffer, .chars_in_buffer = pty_chars_in_buffer,
.unthrottle = pty_unthrottle, .unthrottle = pty_unthrottle,
.set_termios = pty_set_termios,
.ioctl = pty_unix98_ioctl, .ioctl = pty_unix98_ioctl,
.resize = pty_resize, .resize = pty_resize,
.shutdown = pty_unix98_shutdown, .shutdown = pty_unix98_shutdown,
......
...@@ -528,6 +528,8 @@ EXPORT_SYMBOL(tty_termios_hw_change); ...@@ -528,6 +528,8 @@ EXPORT_SYMBOL(tty_termios_hw_change);
* is a bit of layering violation here with n_tty in terms of the * is a bit of layering violation here with n_tty in terms of the
* internal knowledge of this function. * internal knowledge of this function.
* *
* A master pty's termios should never be set.
*
* Locking: termios_rwsem * Locking: termios_rwsem
*/ */
...@@ -537,6 +539,8 @@ int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios) ...@@ -537,6 +539,8 @@ int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
struct tty_ldisc *ld; struct tty_ldisc *ld;
unsigned long flags; unsigned long flags;
WARN_ON(tty->driver->type == TTY_DRIVER_TYPE_PTY &&
tty->driver->subtype == PTY_TYPE_MASTER);
/* /*
* Perform the actual termios internal changes under lock. * Perform the actual termios internal changes under lock.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment