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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Oct 2022 10:35:03 +0000 (12:35 +0200)
[ Upstream commit 1d6aa08c54cd0e005210ab8e3b1e92ede70f8a4f ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/clk/clk-oxnas.c

index 78d5ea6..2fe36f5 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;
        const struct of_device_id *id;
        struct regmap *regmap;
@@ -219,7 +219,9 @@ static int oxnas_stdclk_probe(struct platform_device *pdev)
                return -ENODEV;
        data = id->data;
 
-       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);