drivers/tty/serial/8250/8250_uniphier.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
uniphier_uart_probe() calls clk_prepare_enable() on priv->clk before it
reads the port properties, but returns directly when
uart_read_port_properties() fails, leaving the clock prepared and
enabled.
The intent is clear from the surrounding code: the next error path, when
serial8250_register_8250_port() fails, calls clk_disable_unprepare(), as
does uniphier_uart_remove(). Add the missing call so the early failure
behaves the same way.
Found by smatch:
drivers/tty/serial/8250/8250_uniphier.c:232 uniphier_uart_probe() warn: 'priv->clk' from clk_prepare_enable() not released on lines: 205.
Fixes: 26e8349c0d76 ("serial: 8250_uniphier: Switch to use uart_read_port_properties()")
Signed-off-by: Malathi A <malathi.a2000@gmail.com>
---
drivers/tty/serial/8250/8250_uniphier.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250_uniphier.c b/drivers/tty/serial/8250/8250_uniphier.c
index e3db60bf50c9..52667c1891bb 100644
--- a/drivers/tty/serial/8250/8250_uniphier.c
+++ b/drivers/tty/serial/8250/8250_uniphier.c
@@ -201,8 +201,10 @@ static int uniphier_uart_probe(struct platform_device *pdev)
up.port.membase = membase;
ret = uart_read_port_properties(&up.port);
- if (ret)
+ if (ret) {
+ clk_disable_unprepare(priv->clk);
return ret;
+ }
up.port.type = PORT_16550A;
up.port.iotype = UPIO_MEM32;
--
2.43.0
On Wed, Sep 16, 2026 at 09:54:36AM +0000, Malathi A wrote: > uniphier_uart_probe() calls clk_prepare_enable() on priv->clk before it > reads the port properties, but returns directly when > uart_read_port_properties() fails, leaving the clock prepared and > enabled. > > The intent is clear from the surrounding code: the next error path, when > serial8250_register_8250_port() fails, calls clk_disable_unprepare(), as > does uniphier_uart_remove(). Add the missing call so the early failure > behaves the same way. > > Found by smatch: > > drivers/tty/serial/8250/8250_uniphier.c:232 uniphier_uart_probe() warn: 'priv->clk' from clk_prepare_enable() not released on lines: 205. Why not using devm_clk_get_enabled() instead? -- With Best Regards, Andy Shevchenko
© 2016 - 2026 Red Hat, Inc.