serial: tegra: fix CREAD handling for PIO
Subsystems (4)
cover serial: tegra: fix CREAD handling for PIO
Stumbled over these two; compile-tested only.
Johan
Johan Hovold (2):
serial: tegra: fix CREAD handling for PIO
serial: tegra: drop bogus NULL tty-port checks
drivers/tty/serial/serial-tegra.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
Signature · 1 line
2.26.2
PATCH 1/2 serial: tegra: fix CREAD handling for PIO
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.
--- drivers/tty/serial/serial-tegra.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/tty/serial/serial-tegra.c +5 -2
@@ -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 ); }
Signature · 1 line
2.26.2
Quoted 8 lines · Johan Hovold
Commit
33ae787b74fc("serial: tegra: add support to ignore read") added support for dropping input in case CREAD isn't set, but for PIO theignore_status_maskwasn'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.
Quoted 8 lines
Fixes 33ae787b74fc ("serial: tegra: add support to ignore read")Cc stable <[email protected]> # 5.4Cc Shardar Shariff Md <[email protected]>Cc Krishna Yarlagadda <[email protected]>Signed-off-by Johan Hovold <[email protected]>--- drivers/tty/serial/serial-tegra.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
Looks good to me:
PATCH 2/2 serial: tegra: drop bogus NULL tty-port checks
In reply to Johan HovoldThe struct tty_port is part of the uart state and will never be NULL in the receive helpers. Drop the bogus NULL checks and rename the pointer-variables "port" to differentiate them from struct tty_struct pointers (which can be NULL).
--- drivers/tty/serial/serial-tegra.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)
drivers/tty/serial/serial-tegra.c +4 -9
@@ -635,7 +635,7 @@ static void tegra_uart_handle_tx_pio(struct tegra_uart_port *tup) }static void tegra_uart_handle_rx_pio (struct tegra_uart_port *tup, -struct tty_port *tty) +struct tty_port *port) { do { char flag = TTY_NORMAL;
@@ -659,13 +659,12 @@ static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup,if (tup->uport.ignore_status_mask &UART_LSR_DR )continue ; -if (tty) -tty_insert_flip_char (tty, ch, flag); +tty_insert_flip_char (port, ch, flag); }while (1 ); }static void tegra_uart_copy_rx_to_tty (struct tegra_uart_port *tup, -struct tty_port *tty, +struct tty_port *port,unsigned int count) {int copied;
@@ -675,17 +674,13 @@ static void tegra_uart_copy_rx_to_tty(struct tegra_uart_port *tup,return ; tup->uport.icount.rx += count; -if (!tty) { -dev_err (tup->uport.dev,"No tty port\n" ); -return ; - }if (tup->uport.ignore_status_mask &UART_LSR_DR )return ;dma_sync_single_for_cpu (tup->uport.dev, tup->rx_dma_buf_phys, count,DMA_FROM_DEVICE ); - copied =tty_insert_flip_string (tty, + copied =tty_insert_flip_string (port, ((unsigned char *)(tup->rx_dma_buf_virt)), count);if (copied != count) {WARN_ON (1 );
Signature · 1 line
2.26.2
Re: [PATCH 2/2] serial: tegra: drop bogus NULL tty-port checks
Quoted 10 lines · Johan Hovold
The struct
tty_portis part of the uart state and will never be NULL in the receive helpers. Drop the bogus NULL checks and rename the pointer-variables "port" to differentiate them from structtty_structpointers (which can be NULL).Fixes 962963e4ee23 ("serial: tegra: Switch to using struct tty_port")Signed-off-by Johan Hovold <[email protected]>--- drivers/tty/serial/serial-tegra.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)