]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: renesas: cpg-mssr: Fix 'soc' node handling in cpg_mssr_reserved_init()
authorJavier Carrasco <javier.carrasco.cruz@gmail.com>
Thu, 31 Oct 2024 12:43:16 +0000 (13:43 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Tue, 3 Dec 2024 09:19:19 +0000 (10:19 +0100)
A device_node reference obtained via of_find_node_by_path() requires
explicit calls to of_node_put() after it is no longer required to avoid
leaking the resource.

Instead of adding the missing calls to of_node_put() in all execution
paths, use the cleanup attribute for 'soc' by means of the __free()
macro, which automatically calls of_node_put() when the variable goes
out of scope.

Fixes: 6aa175476490 ("clk: renesas: cpg-mssr: Ignore all clocks assigned to non-Linux system")
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20241031-clk-renesas-cpg-mssr-cleanup-v2-1-0010936d1154@gmail.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/clk/renesas/renesas-cpg-mssr.c

index 79e7a90c3b1befe187b09f8138ad67581aa93b3e..bf85501709f03b911b90925b392d80ea4a4415d9 100644 (file)
@@ -979,7 +979,7 @@ static void __init cpg_mssr_reserved_exit(struct cpg_mssr_priv *priv)
 static int __init cpg_mssr_reserved_init(struct cpg_mssr_priv *priv,
                                         const struct cpg_mssr_info *info)
 {
-       struct device_node *soc = of_find_node_by_path("/soc");
+       struct device_node *soc __free(device_node) = of_find_node_by_path("/soc");
        struct device_node *node;
        uint32_t args[MAX_PHANDLE_ARGS];
        unsigned int *ids = NULL;