[clocksource: timers/drivers/next] clocksource/drivers/timer-ti-dm: Handle runtime resume failure

clocksource-bot for Jiale Yao posted 1 patch 2 hours ago
drivers/clocksource/timer-ti-dm.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
[clocksource: timers/drivers/next] clocksource/drivers/timer-ti-dm: Handle runtime resume failure
Posted by clocksource-bot for Jiale Yao 2 hours ago
The following commit has been merged into the timers/drivers/next branch of clocksource:

Commit-ID:     c40b76c8cf580466d9e56223f7f74beecc165480
Gitweb:        https://git.kernel.org/pub/scm/linux/kernel/git/daniel.lezcano/linux.git//c40b76c8cf580466d9e56223f7f74beecc165480
Author:        Jiale Yao <yaojiale02@163.com>
AuthorDate:    Sat, 03 Oct 2026 16:08:11 +08:00
Committer:     Daniel Lezcano <daniel.lezcano@kernel.org>
CommitterDate: Wed, 14 Oct 2026 20:43:56 +02:00

clocksource/drivers/timer-ti-dm: Handle runtime resume failure

omap_dm_timer_write_counter() accesses timer registers and updates the
saved counter value after requesting a runtime PM reference. If runtime
resume fails, the timer remains inaccessible and no reference is
acquired, but the function still writes the register, drops a
reference, updates the cached value, and reports success.

Check the return value and propagate an error before touching the timer
state.

Fixes: 0494fc345b37 ("clocksource/drivers/timer-ti-dm : Capture functionality for OMAP DM timer")
Signed-off-by: Jiale Yao <yaojiale02@163.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org>
Link: https://patch.msgid.link/20261003080812.429386-1-yaojiale02@163.com
---
 drivers/clocksource/timer-ti-dm.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/clocksource/timer-ti-dm.c b/drivers/clocksource/timer-ti-dm.c
index ae8777d..8012d3f 100644
--- a/drivers/clocksource/timer-ti-dm.c
+++ b/drivers/clocksource/timer-ti-dm.c
@@ -1095,6 +1095,7 @@ static int omap_dm_timer_write_counter(struct omap_dm_timer *cookie, unsigned in
 {
 	struct dmtimer *timer;
 	struct device *dev;
+	int ret;
 
 	timer = to_dmtimer(cookie);
 	if (unlikely(!timer)) {
@@ -1104,7 +1105,10 @@ static int omap_dm_timer_write_counter(struct omap_dm_timer *cookie, unsigned in
 
 	dev = &timer->pdev->dev;
 
-	pm_runtime_resume_and_get(dev);
+	ret = pm_runtime_resume_and_get(dev);
+	if (ret < 0)
+		return ret;
+
 	dmtimer_write(timer, OMAP_TIMER_COUNTER_REG, value);
 	pm_runtime_put_sync(dev);