]> git.itanic.dy.fi Git - linux-stable/commitdiff
clk: oxnas: Hold reference returned by of_get_parent()
authorLiang He <windhl@126.com>
Tue, 28 Jun 2022 14:31:55 +0000 (22:31 +0800)
committerStephen Boyd <sboyd@kernel.org>
Fri, 19 Aug 2022 21:35:43 +0000 (14:35 -0700)
In oxnas_stdclk_probe(), we need to hold the reference returned by
of_get_parent() and use it to call of_node_put() for refcount
balance.

Fixes: 0bbd72b4c64f ("clk: Add Oxford Semiconductor OXNAS Standard Clocks")
Signed-off-by: Liang He <windhl@126.com>
Link: https://lore.kernel.org/r/20220628143155.170550-1-windhl@126.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-oxnas.c

index cda5e258355bc68419c117c1934df5ac7652be32..584e293156ad6041d46c3e29782da6b0fe11fea7 100644 (file)
@@ -207,7 +207,7 @@ static const struct of_device_id oxnas_stdclk_dt_ids[] = {
 
 static int oxnas_stdclk_probe(struct platform_device *pdev)
 {
-       struct device_node *np = pdev->dev.of_node;
+       struct device_node *np = pdev->dev.of_node, *parent_np;
        const struct oxnas_stdclk_data *data;
        struct regmap *regmap;
        int ret;
@@ -215,7 +215,9 @@ static int oxnas_stdclk_probe(struct platform_device *pdev)
 
        data = of_device_get_match_data(&pdev->dev);
 
-       regmap = syscon_node_to_regmap(of_get_parent(np));
+       parent_np = of_get_parent(np);
+       regmap = syscon_node_to_regmap(parent_np);
+       of_node_put(parent_np);
        if (IS_ERR(regmap)) {
                dev_err(&pdev->dev, "failed to have parent regmap\n");
                return PTR_ERR(regmap);