PM / OPP: add missing of_node_put() for of_get_cpu_node()
authorSudeep Holla <Sudeep.Holla@arm.com>
Thu, 12 Oct 2017 10:32:23 +0000 (11:32 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 13 Oct 2017 22:49:41 +0000 (00:49 +0200)
Commit 762792913f8c (PM / OPP: Fix get sharing CPUs when hotplug
is used) moved away from using cpu_dev->of_node because of some
limitations.

However, commit 7467c9d95989 (of: return of_get_cpu_node from
of_cpu_device_node_get if CPUs are not registered) added support to
fall back to of_get_cpu_node() if called if CPUs are not registered
yet.

Add the missing of_node_put() for the CPU device nodes. Also go back
to using of_cpu_device_node_get() in dev_pm_opp_of_get_sharing_cpus()
to avoid scanning the device tree again.

Acked-by: Viresh Kumar <vireshk@kernel.org>
Fixes: 762792913f8c (PM / OPP: Fix get sharing CPUs when hotplug is used)
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/opp/of.c

index 87509cb69f792308abd8665d444ad86031457eba..cb716aa2f44be9d2cad2ff9d06a0b71a9f4d6b1c 100644 (file)
@@ -16,7 +16,7 @@
 #include <linux/cpu.h>
 #include <linux/errno.h>
 #include <linux/device.h>
-#include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/slab.h>
 #include <linux/export.h>
 
@@ -604,7 +604,7 @@ int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev,
                if (cpu == cpu_dev->id)
                        continue;
 
-               cpu_np = of_get_cpu_node(cpu, NULL);
+               cpu_np = of_cpu_device_node_get(cpu);
                if (!cpu_np) {
                        dev_err(cpu_dev, "%s: failed to get cpu%d node\n",
                                __func__, cpu);
@@ -614,6 +614,7 @@ int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev,
 
                /* Get OPP descriptor node */
                tmp_np = _opp_of_get_opp_desc_node(cpu_np);
+               of_node_put(cpu_np);
                if (!tmp_np) {
                        pr_err("%pOF: Couldn't find opp node\n", cpu_np);
                        ret = -ENOENT;