* [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early
@ 2022-12-23 4:23 Dominique Martinet
2022-12-23 4:23 ` [PATCH 5.10 2/2] serial: fixup backport of "serial: Deassert Transmit Enable on probe in driver-specific way" Dominique Martinet
2023-01-12 12:47 ` [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early Greg Kroah-Hartman
0 siblings, 2 replies; 3+ messages in thread
From: Dominique Martinet @ 2022-12-23 4:23 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Ilpo Järvinen, Lukas Wunner,
Rasmus Villemoes
Cc: Daisuke Mizobuchi, stable, linux-serial, Indan Zupancic,
Dominique Martinet
From: Indan Zupancic <Indan.Zupancic@mep-info.com>
[ Upstream commit 401fb66a355eb0f22096cf26864324f8e63c7d78 ]
If an irq is pending when devm_request_irq() is called, the irq
handler will cause a NULL pointer access because initialisation
is not done yet.
Fixes: 9d7ee0e28da59 ("tty: serial: lpuart: avoid report NULL interrupt")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Indan Zupancic <Indan.Zupancic@mep-info.com>
Link: https://lore.kernel.org/r/20220505114750.45423-1-Indan.Zupancic@mep-info.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[5.10 did not have lpuart_global_reset or anything after
uart_add_one_port(), so add the remove call in cleanup manually]
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
---
This was originally intended as a prerequirement to backport the patch
submitted in [1] for 5.10, but even with that part of the patch gone it
makes sense as a fix on its own.
[1] https://lkml.kernel.org/r/20221222114414.1886632-1-linux@rasmusvillemoes.dk
drivers/tty/serial/fsl_lpuart.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 43aca5a2ef0f..223695947b65 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -2586,6 +2586,7 @@ static int lpuart_probe(struct platform_device *pdev)
struct device_node *np = pdev->dev.of_node;
struct lpuart_port *sport;
struct resource *res;
+ irq_handler_t handler;
int ret;
sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL);
@@ -2658,17 +2659,12 @@ static int lpuart_probe(struct platform_device *pdev)
if (lpuart_is_32(sport)) {
lpuart_reg.cons = LPUART32_CONSOLE;
- ret = devm_request_irq(&pdev->dev, sport->port.irq, lpuart32_int, 0,
- DRIVER_NAME, sport);
+ handler = lpuart32_int;
} else {
lpuart_reg.cons = LPUART_CONSOLE;
- ret = devm_request_irq(&pdev->dev, sport->port.irq, lpuart_int, 0,
- DRIVER_NAME, sport);
+ handler = lpuart_int;
}
- if (ret)
- goto failed_irq_request;
-
ret = uart_get_rs485_mode(&sport->port);
if (ret)
goto failed_get_rs485;
@@ -2684,11 +2680,17 @@ static int lpuart_probe(struct platform_device *pdev)
if (ret)
goto failed_attach_port;
+ ret = devm_request_irq(&pdev->dev, sport->port.irq, handler, 0,
+ DRIVER_NAME, sport);
+ if (ret)
+ goto failed_irq_request;
+
return 0;
+failed_irq_request:
+ uart_remove_one_port(&lpuart_reg, &sport->port);
failed_get_rs485:
failed_attach_port:
-failed_irq_request:
lpuart_disable_clks(sport);
return ret;
}
--
2.35.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 5.10 2/2] serial: fixup backport of "serial: Deassert Transmit Enable on probe in driver-specific way"
2022-12-23 4:23 [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early Dominique Martinet
@ 2022-12-23 4:23 ` Dominique Martinet
2023-01-12 12:47 ` [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early Greg Kroah-Hartman
1 sibling, 0 replies; 3+ messages in thread
From: Dominique Martinet @ 2022-12-23 4:23 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Ilpo Järvinen, Lukas Wunner,
Rasmus Villemoes
Cc: Daisuke Mizobuchi, stable, linux-serial, Dominique Martinet
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
When 7c7f9bc986e6 ("serial: Deassert Transmit Enable on probe in
driver-specific way") got backported to 5.10.y, there known as
26a2b9c468de, some hunks were accidentally left out.
In serial_core.c, it is possible that the omission in
uart_suspend_port() is harmless, but the backport did have the
corresponding hunk in uart_resume_port(), it runs counter to the
original commit's intention of
Skip any invocation of ->set_mctrl() if RS485 is enabled.
and it's certainly better to be aligned with upstream.
Link: https://lkml.kernel.org/r/20221222114414.1886632-1-linux@rasmusvillemoes.dk
Fixes: 26a2b9c468de ("serial: Deassert Transmit Enable on probe in driver-specific way")
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
[the fsl_lpuart part of the 5.15 patch is not required on 5.10,
because the code before 26a2b9c468de was incorrectly not calling
uart_remove_one_port on failed_get_rs485]
Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
---
The part in v2 of the patch still makes sense, so here's just that for
5.10.
(I've kept Rasmus as author for the 5.10 version as well, thanks again!)
drivers/tty/serial/serial_core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 605f928f0636..40fff38588d4 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -2254,7 +2254,8 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport)
spin_lock_irq(&uport->lock);
ops->stop_tx(uport);
- ops->set_mctrl(uport, 0);
+ if (!(uport->rs485.flags & SER_RS485_ENABLED))
+ ops->set_mctrl(uport, 0);
ops->stop_rx(uport);
spin_unlock_irq(&uport->lock);
--
2.35.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early
2022-12-23 4:23 [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early Dominique Martinet
2022-12-23 4:23 ` [PATCH 5.10 2/2] serial: fixup backport of "serial: Deassert Transmit Enable on probe in driver-specific way" Dominique Martinet
@ 2023-01-12 12:47 ` Greg Kroah-Hartman
1 sibling, 0 replies; 3+ messages in thread
From: Greg Kroah-Hartman @ 2023-01-12 12:47 UTC (permalink / raw)
To: Dominique Martinet
Cc: Jiri Slaby, Ilpo Järvinen, Lukas Wunner, Rasmus Villemoes,
Daisuke Mizobuchi, stable, linux-serial, Indan Zupancic
On Fri, Dec 23, 2022 at 01:23:53PM +0900, Dominique Martinet wrote:
> From: Indan Zupancic <Indan.Zupancic@mep-info.com>
>
> [ Upstream commit 401fb66a355eb0f22096cf26864324f8e63c7d78 ]
>
> If an irq is pending when devm_request_irq() is called, the irq
> handler will cause a NULL pointer access because initialisation
> is not done yet.
>
> Fixes: 9d7ee0e28da59 ("tty: serial: lpuart: avoid report NULL interrupt")
> Cc: stable <stable@vger.kernel.org>
> Signed-off-by: Indan Zupancic <Indan.Zupancic@mep-info.com>
> Link: https://lore.kernel.org/r/20220505114750.45423-1-Indan.Zupancic@mep-info.com
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> [5.10 did not have lpuart_global_reset or anything after
> uart_add_one_port(), so add the remove call in cleanup manually]
> Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
> ---
> This was originally intended as a prerequirement to backport the patch
> submitted in [1] for 5.10, but even with that part of the patch gone it
> makes sense as a fix on its own.
>
> [1] https://lkml.kernel.org/r/20221222114414.1886632-1-linux@rasmusvillemoes.dk
>
> drivers/tty/serial/fsl_lpuart.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
Both now queued up, thanks.
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-01-12 12:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-23 4:23 [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early Dominique Martinet
2022-12-23 4:23 ` [PATCH 5.10 2/2] serial: fixup backport of "serial: Deassert Transmit Enable on probe in driver-specific way" Dominique Martinet
2023-01-12 12:47 ` [PATCH 5.10 1/2] fsl_lpuart: Don't enable interrupts too early Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).