Re: [PATCH 1/2] tty: serial: fsl_lpuart: fix the potential bug of division or modulo by zero

From: Greg KH
Date: Mon Apr 26 2021 - 04:08:37 EST


On Mon, Apr 26, 2021 at 03:49:34PM +0800, Sherry Sun wrote:
> This issue is reported by Coverity Check.
> In lpuart32_console_get_options, division or modulo by zero may results
> in undefined behavior.
>
> Signed-off-by: Sherry Sun <sherry.sun@xxxxxxx>
> ---
> drivers/tty/serial/fsl_lpuart.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
> index 794035041744..777d54b593f8 100644
> --- a/drivers/tty/serial/fsl_lpuart.c
> +++ b/drivers/tty/serial/fsl_lpuart.c
> @@ -2414,6 +2414,9 @@ lpuart32_console_get_options(struct lpuart_port *sport, int *baud,
>
> bd = lpuart32_read(&sport->port, UARTBAUD);
> bd &= UARTBAUD_SBR_MASK;
> + if (!bd)
> + return;

How can this ever happen?

Not to say this is a bad check, but it feels like this can't really
happen in real life, what code patch could create this result?

And have you tested this on real hardware?

thanks,

greg k-h