[PATCH] powerpc: Fix resource leak in ls_uart.c

Vencent Liu 961342126 at qq.com
Thu Aug 14 18:24:50 AEST 2025


From: Vencent Liu <Security at tencent.com>

In the ls_uarts_init function, the device node
reference count wasn't properly released on error paths.
When `of_get_property("clock-frequency")`
fails, the function returns `-EINVAL` without calling
`of_node_put(avr)` to release the device node reference obtained by
`of_find_node_by_path()`.

Signed-off-by: Vencent Liu <Security at tencent.com>
---
 arch/powerpc/platforms/embedded6xx/ls_uart.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/platforms/embedded6xx/ls_uart.c b/arch/powerpc/platforms/embedded6xx/ls_uart.c
index 6c1dbf8ae718..b889206bea4c 100644
--- a/arch/powerpc/platforms/embedded6xx/ls_uart.c
+++ b/arch/powerpc/platforms/embedded6xx/ls_uart.c
@@ -18,6 +18,7 @@
 #include <linux/of_address.h>
 #include <asm/io.h>
 #include <asm/termbits.h>
+#include <linux/cleanup.h>
 
 #include "mpc10x.h"
 
@@ -114,11 +115,11 @@ static void __init ls_uart_init(void)
 
 static int __init ls_uarts_init(void)
 {
-	struct device_node *avr;
 	struct resource res;
 	int len, ret;
 
-	avr = of_find_node_by_path("/soc10x/serial at 80004500");
+	struct device_node *avr __free(device_node) =
+			of_find_node_by_path("/soc10x/serial at 80004500");
 	if (!avr)
 		return -EINVAL;
 
-- 
2.43.5



More information about the Linuxppc-dev mailing list