Re: [PATCH] Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 19, 2019 at 10:16:39AM +0200, Oliver Barta wrote:
> This reverts commit 2e9fe539108320820016f78ca7704a7342788380.
> 
> Reading LSR unconditionally but processing the error flags only if
> UART_IIR_RDI bit was set before in IIR may lead to a loss of transmission
> error information on UARTs where the transmission error flags are cleared
> by a read of LSR. Information are lost in case an error is detected right
> before the read of LSR while processing e.g. an UART_IIR_THRI interrupt.
> 

Perhaps Fixes tag?

Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

> Signed-off-by: Oliver Barta <o.barta89@xxxxxxxxx>
> ---
>  drivers/tty/serial/8250/8250_port.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
> index d2f3310abe54..682300713be4 100644
> --- a/drivers/tty/serial/8250/8250_port.c
> +++ b/drivers/tty/serial/8250/8250_port.c
> @@ -1869,8 +1869,7 @@ int serial8250_handle_irq(struct uart_port *port, unsigned int iir)
>  
>  	status = serial_port_in(port, UART_LSR);
>  
> -	if (status & (UART_LSR_DR | UART_LSR_BI) &&
> -	    iir & UART_IIR_RDI) {
> +	if (status & (UART_LSR_DR | UART_LSR_BI)) {
>  		if (!up->dma || handle_rx_dma(up, iir))
>  			status = serial8250_rx_chars(up, status);
>  	}
> -- 
> 2.20.1
> 

-- 
With Best Regards,
Andy Shevchenko





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux