The of_get_parent() function increments the reference count of the
returned parent node, and of_node_put() is required to
release the reference when it is no longer needed.

The uli_init() function has a device_node reference leak.
The issue occurs in two scenarios:
1. When the function finds a matching device, it breaks out of the loop,
   the reference held by 'node' is not released.
2. When the loop terminates normally (of_get_parent returns NULL),
   the final parent node reference is not released.

Fix this by adding of_node_put(node).

Fixes: 91a6f347921e ("powerpc/mpc85xx_ds: convert to unified PCI init")
Cc: [email protected]
Signed-off-by: Miaoqian Lin <[email protected]>
---
 arch/powerpc/platforms/fsl_uli1575.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/powerpc/platforms/fsl_uli1575.c 
b/arch/powerpc/platforms/fsl_uli1575.c
index b8d37a9932f1..36624c88d5f3 100644
--- a/arch/powerpc/platforms/fsl_uli1575.c
+++ b/arch/powerpc/platforms/fsl_uli1575.c
@@ -376,4 +376,5 @@ void __init uli_init(void)
                        break;
                }
        }
+       of_node_put(node);
 }
-- 
2.39.5 (Apple Git-154)


Reply via email to