serial: tegra: fix CREAD handling for PIO
authorJohan Hovold <johan@kernel.org>
Fri, 10 Jul 2020 13:59:46 +0000 (15:59 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 21 Jul 2020 18:58:25 +0000 (20:58 +0200)
Commit 33ae787b74fc ("serial: tegra: add support to ignore read") added
support for dropping input in case CREAD isn't set, but for PIO the
ignore_status_mask wasn't checked until after the character had been
put in the receive buffer.

Note that the NULL tty-port test is bogus and will be removed by a
follow-on patch.

Fixes: 33ae787b74fc ("serial: tegra: add support to ignore read")
Cc: stable <stable@vger.kernel.org> # 5.4
Cc: Shardar Shariff Md <smohammed@nvidia.com>
Cc: Krishna Yarlagadda <kyarlagadda@nvidia.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20200710135947.2737-2-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial-tegra.c

index 8de8bac..b3bbee6 100644 (file)
@@ -653,11 +653,14 @@ static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup,
                ch = (unsigned char) tegra_uart_read(tup, UART_RX);
                tup->uport.icount.rx++;
 
-               if (!uart_handle_sysrq_char(&tup->uport, ch) && tty)
-                       tty_insert_flip_char(tty, ch, flag);
+               if (uart_handle_sysrq_char(&tup->uport, ch))
+                       continue;
 
                if (tup->uport.ignore_status_mask & UART_LSR_DR)
                        continue;
+
+               if (tty)
+                       tty_insert_flip_char(tty, ch, flag);
        } while (1);
 }