cpufreq: imx6q: fix error handling
authorPeng Fan <peng.fan@nxp.com>
Tue, 3 Mar 2020 02:14:49 +0000 (10:14 +0800)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 3 Mar 2020 11:16:35 +0000 (16:46 +0530)
When speed checking failed, direclty jumping to put_node label
is not correct. Need jump to out_free_opp to avoid resources leak.

Fixes: 2733fb0d0699 ("cpufreq: imx6q: read OCOTP through nvmem for imx6ul/imx6ull")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/imx6q-cpufreq.c

index 1fcbbd5..edef339 100644 (file)
@@ -381,23 +381,24 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev)
                goto put_reg;
        }
 
+       /* Because we have added the OPPs here, we must free them */
+       free_opp = true;
+
        if (of_machine_is_compatible("fsl,imx6ul") ||
            of_machine_is_compatible("fsl,imx6ull")) {
                ret = imx6ul_opp_check_speed_grading(cpu_dev);
                if (ret) {
                        if (ret == -EPROBE_DEFER)
-                               goto put_node;
+                               goto out_free_opp;
 
                        dev_err(cpu_dev, "failed to read ocotp: %d\n",
                                ret);
-                       goto put_node;
+                       goto out_free_opp;
                }
        } else {
                imx6q_opp_check_speed_grading(cpu_dev);
        }
 
-       /* Because we have added the OPPs here, we must free them */
-       free_opp = true;
        num = dev_pm_opp_get_opp_count(cpu_dev);
        if (num < 0) {
                ret = num;