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: d2f31f1da5 "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>
This commit is contained in:
Lucas Stach 2014-09-26 15:33:46 +02:00 committed by Rafael J. Wysocki
parent bbcf071969
commit f9739d2705

View file

@ -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: