From: Johan Hovold <jo...@kernel.org>

commit b374c562ee7ab3f3a1daf959c01868bae761571c upstream.

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 <sta...@vger.kernel.org>     # 5.4
Cc: Shardar Shariff Md <smoham...@nvidia.com>
Cc: Krishna Yarlagadda <kyarlaga...@nvidia.com>
Signed-off-by: Johan Hovold <jo...@kernel.org>
Acked-by: Thierry Reding <tred...@nvidia.com>
Link: https://lore.kernel.org/r/20200710135947.2737-2-jo...@kernel.org
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
 drivers/tty/serial/serial-tegra.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

--- a/drivers/tty/serial/serial-tegra.c
+++ b/drivers/tty/serial/serial-tegra.c
@@ -653,11 +653,14 @@ static void tegra_uart_handle_rx_pio(str
                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);
 }
 


Reply via email to