diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2014-09-26 13:33:46 (GMT) |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-10-03 13:40:55 (GMT) |
commit | f9739d27059d8fd7b64096ea7251608628b5bd30 (patch) | |
tree | 6ffd2145d88465afd95bb8b66449add8a5f21d29 | |
parent | bbcf071969b20f356877c8067986be0a2dcaa2aa (diff) | |
download | linux-f9739d27059d8fd7b64096ea7251608628b5bd30.tar.xz |
cpufreq: cpufreq-dt: fix potential double put of cpu OF node
If cpufreq_generic_init() fails we jump into the resource
cleanup path which contains a of_node_put() call. Another
instance of this has already been called at that time
resulting a double decrement of the refcount.
Fix this by calling of_node_put() only after we are sure
that nothing has gone wrong.
Fixes: d2f31f1da54f "cpufreq: cpu0: Move per-cluster initialization code to ->init()"
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/cpufreq/cpufreq-dt.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index e002650..6bbb8b9 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -259,7 +259,6 @@ static int cpufreq_init(struct cpufreq_policy *policy) else priv->cdev = cdev; } - of_node_put(np); priv->cpu_dev = cpu_dev; priv->cpu_reg = cpu_reg; @@ -270,6 +269,8 @@ static int cpufreq_init(struct cpufreq_policy *policy) if (ret) goto out_cooling_unregister; + of_node_put(np); + return 0; out_cooling_unregister: |