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: Peter Hurley <peter@hurleysoftware.com> Reviewed-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a361858da3
commit
6460fbbf47
@ -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 = {
|
|||||||
.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);
|
|||||||
* 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)
|
|||||||
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.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user