FAILED: Patch "ARM: omap2: Fix reference count leaks in omap_control_init()" failed to apply to 5.10-stable tree
Subsystems (4)
Sasha Levin
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Thanks,
Sasha
------------------ original commit in Linus's tree ------------------
From 93a04ab480c8bbcb7d9004be139c538c8a0c1bc8 Mon Sep 17 00:00:00 2001
From: Wentao Liang <[email protected]>
Date: Wed, 17 Dec 2025 14:21:22 +0000
Subject: [PATCH] ARM: omap2: Fix reference count leaks in omap_control_init()
The of_get_child_by_name() function increments the reference count of child nodes, causing multiple reference leaks in omap_control_init():
1. scm_conf node never released in normal/error paths
2. clocks node leak when checking existence
3. Missing scm_conf release before np in error paths
Fix these leaks by adding proper of_node_put() calls and separate error handling.
--- arch/arm/mach-omap2/control.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/control.c +10 -4
@@ -732,7 +732,7 @@ int __init omap2_control_base_init(void)*/ int __init omap_control_init (void ) { -struct device_node *np, *scm_conf; +struct device_node *np, *scm_conf, *clocks_node;const struct of_device_id *match;const struct omap_prcm_init_data *data;int ret;
@@ -753,16 +753,19 @@ int __init omap_control_init(void)if (IS_ERR (syscon)) { ret =PTR_ERR (syscon); - goto of_node_put; + goto err_put_scm_conf; } -if (of_get_child_by_name (scm_conf,"clocks" )) { + clocks_node =of_get_child_by_name (scm_conf,"clocks" ); +if (clocks_node) { +of_node_put (clocks_node); ret =omap2_clk_provider_init (scm_conf, data->index, syscon,NULL );if (ret) - goto of_node_put; + goto err_put_scm_conf; } +of_node_put (scm_conf); }else {/* No scm_conf found, direct access */ ret = omap2_clk_provider_init(np, data->index, NULL,
@@ -780,6 +783,9 @@ int __init omap_control_init(void)return 0 ; +err_put_scm_conf: +if (scm_conf) +of_node_put (scm_conf); of_node_put:of_node_put (np);return ret;
Signature · 1 line
2.51.0