[tip: timers/clocksource] clocksource/drivers/sun5i: Handle error returns from devm_reset_control_get_optional_exclusive()

tip-bot2 for Chen Ni posted 1 patch 5 days, 18 hours ago
drivers/clocksource/timer-sun5i.c | 3 +++
1 file changed, 3 insertions(+)
[tip: timers/clocksource] clocksource/drivers/sun5i: Handle error returns from devm_reset_control_get_optional_exclusive()
Posted by tip-bot2 for Chen Ni 5 days, 18 hours ago
The following commit has been merged into the timers/clocksource branch of tip:

Commit-ID:     fed9f727cc3f91dde8278961269419083502b40e
Gitweb:        https://git.kernel.org/tip/fed9f727cc3f91dde8278961269419083502b40e
Author:        Chen Ni <nichen@iscas.ac.cn>
AuthorDate:    Thu, 05 Feb 2026 16:40:37 +08:00
Committer:     Daniel Lezcano <daniel.lezcano@kernel.org>
CommitterDate: Tue, 24 Mar 2026 18:30:44 +01:00

clocksource/drivers/sun5i: Handle error returns from devm_reset_control_get_optional_exclusive()

The devm_reset_control_get_optional_exclusive() function may return an
ERR_PTR in case of genuine reset control acquisition errors, not just
NULL which indicates the legitimate absence of an optional reset.

Add an IS_ERR() check after the call in sun5i_timer_probe(). On error,
return the error code to ensure proper failure handling rather than
proceeding with invalid pointers.

Fixes: 7e5bac610d2f ("clocksource/drivers/sun5i: Convert to platform device driver")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org>
Acked-by: Chen-Yu Tsai <wens@kernel.org>
Link: https://patch.msgid.link/20260205084037.3661261-1-nichen@iscas.ac.cn
---
 drivers/clocksource/timer-sun5i.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/clocksource/timer-sun5i.c b/drivers/clocksource/timer-sun5i.c
index f827d3f..d7e0129 100644
--- a/drivers/clocksource/timer-sun5i.c
+++ b/drivers/clocksource/timer-sun5i.c
@@ -286,6 +286,9 @@ static int sun5i_timer_probe(struct platform_device *pdev)
 	}
 
 	rstc = devm_reset_control_get_optional_exclusive(dev, NULL);
+	if (IS_ERR(rstc))
+		return dev_err_probe(dev, PTR_ERR(rstc),
+				     "failed to get reset\n");
 	if (rstc)
 		reset_control_deassert(rstc);