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;
 
        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);