diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index 26debec26b4e..1150de531460 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -2304,12 +2304,13 @@ static int tiocsti(struct tty_struct *tty, char __user *p) if (get_user(ch, p)) return -EFAULT; tty_audit_tiocsti(tty, ch); + tty_buffer_lock_exclusive(tty->port); ld = tty_ldisc_ref_wait(tty); if (!ld) return -EIO; - if (ld->ops->receive_buf) - ld->ops->receive_buf(tty, &ch, &mbz, 1); + tty_ldisc_receive_buf(ld, &ch, &mbz, 1); tty_ldisc_deref(ld); + tty_buffer_unlock_exclusive(tty->port); return 0; }