Re: [PATCH v2] cpufreq: mediatek: Fix resource leaks on mtk_cpu_create_freq_table() failure
From: Viresh Kumar
Date: Tue Oct 01 2024 - 01:39:25 EST
On 07-09-24, 22:06, Riyan Dhiman wrote:
> If mtk_cpu_create_freq_table() fails then there is a potential resource leak because
> memory region is not released and IO memory is not unmapped.
> Added error handling to ensure proper cleanup of all resources on failure, preventing potential leaks.
>
> Fixes: d776790a5536 (cpufreq: mediatek-hw: Fix double devm_remap in hotplug case)
>
> Signed-off-by: Riyan Dhiman <riyandhiman14@xxxxxxxxx>
> ---
> It is more of a extension of the above commit as this error handling was missing in that commit.
>
> v2: Fix commit message.
> v1: Added error handling.
>
> drivers/cpufreq/mediatek-cpufreq-hw.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cpufreq/mediatek-cpufreq-hw.c b/drivers/cpufreq/mediatek-cpufreq-hw.c
> index 8925e096d5b9..3b1303f350ec 100644
> --- a/drivers/cpufreq/mediatek-cpufreq-hw.c
> +++ b/drivers/cpufreq/mediatek-cpufreq-hw.c
> @@ -207,13 +207,15 @@ static int mtk_cpu_resources_init(struct platform_device *pdev,
> ret = mtk_cpu_create_freq_table(pdev, data);
> if (ret) {
> dev_info(dev, "Domain-%d failed to create freq table\n", index);
> - return ret;
> + goto unmap_region;
> }
>
> policy->freq_table = data->table;
> policy->driver_data = data;
>
> return 0;
> +unmap_region:
> + iounmap(base);
Since this driver already uses devm_* APIs, what about using them
instead ?
--
viresh