]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cpufreq: imx6q: fix error handling
authorPeng Fan <peng.fan@nxp.com>
Tue, 3 Mar 2020 02:14:49 +0000 (10:14 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Apr 2020 14:11:55 +0000 (16:11 +0200)
[ Upstream commit 3646f50a3838c5949a89ecbdb868497cdc05b8fd ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/cpufreq/imx6q-cpufreq.c

index 1fcbbd53a48a29e72100a5e4fa793eb17fd751b8..edef3399c9794501b594bdab32bccc30ba39138a 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;