mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-12 04:19:08 +00:00
cpufreq: exynos: Fix for memory leak in case SoC name does not match
During probe free the memory allocated to "exynos_info" in case of unknown SoC type. Signed-off-by: Shailendra Verma <shailendra.capricorn@gmail.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Acked-by: Lukasz Majewski <l.majewski@samsung.com> [k.kozlowski: Rebased the patch around if(of_machine_is_compatible)] Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Kukjin Kim <kgene@kernel.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
f7644cbfcd
commit
62c3f2fddd
@ -180,7 +180,7 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
|
|||||||
ret = exynos5250_cpufreq_init(exynos_info);
|
ret = exynos5250_cpufreq_init(exynos_info);
|
||||||
} else {
|
} else {
|
||||||
pr_err("%s: Unknown SoC type\n", __func__);
|
pr_err("%s: Unknown SoC type\n", __func__);
|
||||||
return -ENODEV;
|
ret = -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
@ -188,12 +188,14 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
if (exynos_info->set_freq == NULL) {
|
if (exynos_info->set_freq == NULL) {
|
||||||
dev_err(&pdev->dev, "No set_freq function (ERR)\n");
|
dev_err(&pdev->dev, "No set_freq function (ERR)\n");
|
||||||
|
ret = -EINVAL;
|
||||||
goto err_vdd_arm;
|
goto err_vdd_arm;
|
||||||
}
|
}
|
||||||
|
|
||||||
arm_regulator = regulator_get(NULL, "vdd_arm");
|
arm_regulator = regulator_get(NULL, "vdd_arm");
|
||||||
if (IS_ERR(arm_regulator)) {
|
if (IS_ERR(arm_regulator)) {
|
||||||
dev_err(&pdev->dev, "failed to get resource vdd_arm\n");
|
dev_err(&pdev->dev, "failed to get resource vdd_arm\n");
|
||||||
|
ret = -EINVAL;
|
||||||
goto err_vdd_arm;
|
goto err_vdd_arm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,7 +227,7 @@ err_cpufreq_reg:
|
|||||||
regulator_put(arm_regulator);
|
regulator_put(arm_regulator);
|
||||||
err_vdd_arm:
|
err_vdd_arm:
|
||||||
kfree(exynos_info);
|
kfree(exynos_info);
|
||||||
return -EINVAL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct platform_driver exynos_cpufreq_platdrv = {
|
static struct platform_driver exynos_cpufreq_platdrv = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user