On Fri, Jun 29, 2018 at 04:28:03PM +0200, Geert Uytterhoeven wrote:
> The RX FIFO timer may be armed when the port is shut down, hence the
> timer function may still be called afterwards.
> 
> Fix this race condition by deleting the timer during port shutdown.
> 
> Fixes: 039403765e5da3c6 ("serial: sh-sci: SCIFA/B RX FIFO software timeout")
> Signed-off-by: Geert Uytterhoeven <geert+rene...@glider.be>

Reviewed-by: Simon Horman <horms+rene...@verge.net.au>

> ---
> Tested with scifa0 on r8a7740/armadillo, after
> 
>     echo 2000 > /sys/devices/platform/e6c40000.serial/rx_fifo_timeout
> ---
>  drivers/tty/serial/sh-sci.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
> index 5c870ab80b98e25b..04f5b754e69e28dd 100644
> --- a/drivers/tty/serial/sh-sci.c
> +++ b/drivers/tty/serial/sh-sci.c
> @@ -2100,6 +2100,8 @@ static void sci_shutdown(struct uart_port *port)
>       }
>  #endif
>  
> +     if (s->rx_trigger > 1 && s->rx_fifo_timeout > 0)
> +             del_timer_sync(&s->rx_fifo_timer);
>       sci_free_irq(s);
>       sci_free_dma(port);
>  }
> -- 
> 2.17.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sh" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

Reply via email to