diff mbox series

[v3] clocksource: qcom: Add missing iounmap() on errors in msm_dt_timer_init()

Message ID 20240713095713.GA430091@bnew-VirtualBox
State New
Headers show
Series [v3] clocksource: qcom: Add missing iounmap() on errors in msm_dt_timer_init() | expand

Commit Message

Ankit Agrawal July 13, 2024, 9:57 a.m. UTC
Add the missing iounmap() when clock frequency fails to get read by the
of_property_read_u32() call, or if the call to msm_timer_init() fails.

Fixes: 6e3321631ac2 ("ARM: msm: Add DT support to msm_timer")
Signed-off-by: Ankit Agrawal <agrawal.ag.ankit@gmail.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
Changes in v3:
- Update patch commit message
- Link to v2: https://lore.kernel.org/linux-arm-msm/20240712082747.GA182658@bnew-VirtualBox/

Changes in v2:
- Add iounmap() if msm_timer_init() fails
- Update patch commit message
- Link to v1: https://lore.kernel.org/linux-arm-msm/20240710110813.GA15351@bnew-VirtualBox/
---
 drivers/clocksource/timer-qcom.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Konrad Dybcio July 16, 2024, 10:48 a.m. UTC | #1
On 13.07.2024 12:28 PM, Ankit Agrawal wrote:
> On Sat, Jul 13, 2024 at 03:27:13PM +0530, Ankit Agrawal wrote:
>> Add the missing iounmap() when clock frequency fails to get read by the
>> of_property_read_u32() call, or if the call to msm_timer_init() fails.
>>
>> Fixes: 6e3321631ac2 ("ARM: msm: Add DT support to msm_timer")
>> Signed-off-by: Ankit Agrawal <agrawal.ag.ankit@gmail.com>
>> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
>> ---
>> Changes in v3:
>> - Update patch commit message
>> - Link to v2: https://lore.kernel.org/linux-arm-msm/20240712082747.GA182658@bnew-VirtualBox/
>>
>> Changes in v2:
>> - Add iounmap() if msm_timer_init() fails
>> - Update patch commit message
>> - Link to v1: https://lore.kernel.org/linux-arm-msm/20240710110813.GA15351@bnew-VirtualBox/
>> ---
>>  drivers/clocksource/timer-qcom.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clocksource/timer-qcom.c b/drivers/clocksource/timer-qcom.c
>> index b4afe3a67..eac4c95c6 100644
>> --- a/drivers/clocksource/timer-qcom.c
>> +++ b/drivers/clocksource/timer-qcom.c
>> @@ -233,6 +233,7 @@ static int __init msm_dt_timer_init(struct device_node *np)
>>  	}
>>  
>>  	if (of_property_read_u32(np, "clock-frequency", &freq)) {
>> +		iounmap(cpu0_base);
>>  		pr_err("Unknown frequency\n");
>>  		return -EINVAL;
>>  	}
>> @@ -243,7 +244,11 @@ static int __init msm_dt_timer_init(struct device_node *np)
>>  	freq /= 4;
>>  	writel_relaxed(DGT_CLK_CTL_DIV_4, source_base + DGT_CLK_CTL);
>>  
>> -	return msm_timer_init(freq, 32, irq, !!percpu_offset);
>> +	ret = msm_timer_init(freq, 32, irq, !!percpu_offset);
>> +	if (ret)
>> +		iounmap(cpu0_base);
>> +
>> +	return ret;
>>  }
>>  TIMER_OF_DECLARE(kpss_timer, "qcom,kpss-timer", msm_dt_timer_init);
>>  TIMER_OF_DECLARE(scss_timer, "qcom,scss-timer", msm_dt_timer_init);
>> -- 
>> 2.25.1
> 
> Hello maintainers, 
> 
> Could you please suggest the next steps that should be taken to move
> this patch further. From what I understand, the merge-window for the
> next stable kernel release (v6.11) is open, and I would be very much
> grateful if I could get help on moving this patch further.
> 
> Also, please let me know if I need to make any changes to the patch in
> order to finalize it :)

The merge window is named very confusingly.. it's when your patches are
NOT merged, but rather the patches accumulated in the maintainer trees
are sent to Linus Torvalds, where he merges each one of them and runs
some tests to make sure nothing broke. Your patches will be picked up
after 6.11-rc1 drops, and (unless they're fixes) will be scheduled for
6.12

Konrad
diff mbox series

Patch

diff --git a/drivers/clocksource/timer-qcom.c b/drivers/clocksource/timer-qcom.c
index b4afe3a67..eac4c95c6 100644
--- a/drivers/clocksource/timer-qcom.c
+++ b/drivers/clocksource/timer-qcom.c
@@ -233,6 +233,7 @@  static int __init msm_dt_timer_init(struct device_node *np)
 	}
 
 	if (of_property_read_u32(np, "clock-frequency", &freq)) {
+		iounmap(cpu0_base);
 		pr_err("Unknown frequency\n");
 		return -EINVAL;
 	}
@@ -243,7 +244,11 @@  static int __init msm_dt_timer_init(struct device_node *np)
 	freq /= 4;
 	writel_relaxed(DGT_CLK_CTL_DIV_4, source_base + DGT_CLK_CTL);
 
-	return msm_timer_init(freq, 32, irq, !!percpu_offset);
+	ret = msm_timer_init(freq, 32, irq, !!percpu_offset);
+	if (ret)
+		iounmap(cpu0_base);
+
+	return ret;
 }
 TIMER_OF_DECLARE(kpss_timer, "qcom,kpss-timer", msm_dt_timer_init);
 TIMER_OF_DECLARE(scss_timer, "qcom,scss-timer", msm_dt_timer_init);