mxser: don't start TX from tty_operations::put_char
authorJiri Slaby <jslaby@suse.cz>
Fri, 18 Jun 2021 06:15:03 +0000 (08:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Jun 2021 11:10:02 +0000 (13:10 +0200)
TX is not supposed to be started from tty_operations::put_char. Line
disciplines ought to call tty_operations::put_char several times and
then do a single tty_operations::flush_chars to start TX.

Fix this in mxser by removing TX startup from mxser_put_char.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210618061516.662-58-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/mxser.c

index daf820c..52dbdd4 100644 (file)
@@ -998,17 +998,7 @@ static int mxser_put_char(struct tty_struct *tty, unsigned char ch)
        info->xmit_head &= SERIAL_XMIT_SIZE - 1;
        info->xmit_cnt++;
        spin_unlock_irqrestore(&info->slock, flags);
-       if (!tty->flow.stopped) {
-               if (!tty->hw_stopped ||
-                               (info->type == PORT_16550A) ||
-                               info->board->must_hwid) {
-                       spin_lock_irqsave(&info->slock, flags);
-                       outb(info->IER & ~UART_IER_THRI, info->ioaddr + UART_IER);
-                       info->IER |= UART_IER_THRI;
-                       outb(info->IER, info->ioaddr + UART_IER);
-                       spin_unlock_irqrestore(&info->slock, flags);
-               }
-       }
+
        return 1;
 }