]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
clk: fix an OF node reference leak in of_clk_get_parent_name()
authorJoe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Tue, 10 Dec 2024 13:09:12 +0000 (22:09 +0900)
committerStephen Boyd <sboyd@kernel.org>
Tue, 10 Dec 2024 22:53:49 +0000 (14:53 -0800)
Current implementation of of_clk_get_parent_name() leaks an OF node
reference on error path. Add a of_node_put() call before returning an
error.

This bug was found by an experimental static analysis tool that I am
developing.

Fixes: 8da411cc1964 ("clk: let of_clk_get_parent_name() fail for invalid clock-indices")
Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Link: https://lore.kernel.org/r/20241210130913.3615205-1-joe@pf.is.s.u-tokyo.ac.jp
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk.c

index bdc6e5b90da581b3b9cbedcde3366c880a7dfd92..cc57f3f5eb60073bab528b6e7b31cafaba44f825 100644 (file)
@@ -5385,8 +5385,10 @@ const char *of_clk_get_parent_name(const struct device_node *np, int index)
                count++;
        }
        /* We went off the end of 'clock-indices' without finding it */
-       if (of_property_present(clkspec.np, "clock-indices") && !found)
+       if (of_property_present(clkspec.np, "clock-indices") && !found) {
+               of_node_put(clkspec.np);
                return NULL;
+       }
 
        if (of_property_read_string_index(clkspec.np, "clock-output-names",
                                          index,