mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 23:51:37 +00:00
serial: fsl_lpuart: Reset prior to registration
Since commitbd5305dcab
("tty: serial: fsl_lpuart: do software reset for imx7ulp and imx8qxp"), certain i.MX UARTs are reset after they've already been registered. Register state may thus be clobbered after user space has begun to open and access the UART. Avoid by performing the reset prior to registration. Fixes:bd5305dcab
("tty: serial: fsl_lpuart: do software reset for imx7ulp and imx8qxp") Cc: stable@vger.kernel.org # v5.15+ Cc: Fugang Duan <fugang.duan@nxp.com> Cc: Sherry Sun <sherry.sun@nxp.com> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Lukas Wunner <lukas@wunner.de> Link: https://lore.kernel.org/r/72fb646c1b0b11c989850c55f52f9ff343d1b2fa.1662884345.git.lukas@wunner.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1d10cd4da5
commit
60f361722a
@ -2724,14 +2724,15 @@ static int lpuart_probe(struct platform_device *pdev)
|
||||
lpuart_reg.cons = LPUART_CONSOLE;
|
||||
handler = lpuart_int;
|
||||
}
|
||||
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
||||
if (ret)
|
||||
goto failed_attach_port;
|
||||
|
||||
ret = lpuart_global_reset(sport);
|
||||
if (ret)
|
||||
goto failed_reset;
|
||||
|
||||
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
||||
if (ret)
|
||||
goto failed_attach_port;
|
||||
|
||||
ret = uart_get_rs485_mode(&sport->port);
|
||||
if (ret)
|
||||
goto failed_get_rs485;
|
||||
@ -2747,9 +2748,9 @@ static int lpuart_probe(struct platform_device *pdev)
|
||||
|
||||
failed_irq_request:
|
||||
failed_get_rs485:
|
||||
failed_reset:
|
||||
uart_remove_one_port(&lpuart_reg, &sport->port);
|
||||
failed_attach_port:
|
||||
failed_reset:
|
||||
lpuart_disable_clks(sport);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user