aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/cpufreq/cpufreq-dt.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c
index e720954244b1..9bc2720628a4 100644
--- a/drivers/cpufreq/cpufreq-dt.c
+++ b/drivers/cpufreq/cpufreq-dt.c
@@ -214,7 +214,7 @@ static int cpufreq_init(struct cpufreq_policy *policy)
214 priv = kzalloc(sizeof(*priv), GFP_KERNEL); 214 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
215 if (!priv) { 215 if (!priv) {
216 ret = -ENOMEM; 216 ret = -ENOMEM;
217 goto out_put_node; 217 goto out_free_opp;
218 } 218 }
219 219
220 of_property_read_u32(np, "voltage-tolerance", &priv->voltage_tolerance); 220 of_property_read_u32(np, "voltage-tolerance", &priv->voltage_tolerance);
@@ -294,7 +294,8 @@ out_free_cpufreq_table:
294 dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table); 294 dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table);
295out_free_priv: 295out_free_priv:
296 kfree(priv); 296 kfree(priv);
297out_put_node: 297out_free_opp:
298 of_free_opp_table(cpu_dev);
298 of_node_put(np); 299 of_node_put(np);
299out_put_reg_clk: 300out_put_reg_clk:
300 clk_put(cpu_clk); 301 clk_put(cpu_clk);
@@ -311,6 +312,7 @@ static int cpufreq_exit(struct cpufreq_policy *policy)
311 if (priv->cdev) 312 if (priv->cdev)
312 cpufreq_cooling_unregister(priv->cdev); 313 cpufreq_cooling_unregister(priv->cdev);
313 dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table); 314 dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table);
315 of_free_opp_table(priv->cpu_dev);
314 clk_put(policy->clk); 316 clk_put(policy->clk);
315 if (!IS_ERR(priv->cpu_reg)) 317 if (!IS_ERR(priv->cpu_reg))
316 regulator_put(priv->cpu_reg); 318 regulator_put(priv->cpu_reg);