This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 8db732afb1f526c65cc1e812732b246f6f2715f7
Author: ouyangxiangzhen <[email protected]>
AuthorDate: Wed Jan 7 11:33:44 2026 +0800

    sched/hrtimer: Fix functional correctness issue.
    
    The expired field can not be used to indicate the cancelled state. Because
    the `UINT64_MAX` is valid expired time. A periodic hrtimer started with
    the hrtimer_start_absolute(hrtimer, period_func, UINT64_MAX) can
    not be cancelled via `hrtimer_cancel`.
    
    Signed-off-by: ouyangxiangzhen <[email protected]>
---
 sched/hrtimer/hrtimer_cancel.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sched/hrtimer/hrtimer_cancel.c b/sched/hrtimer/hrtimer_cancel.c
index 27e53f0725f..c27c2a3a412 100644
--- a/sched/hrtimer/hrtimer_cancel.c
+++ b/sched/hrtimer/hrtimer_cancel.c
@@ -131,9 +131,11 @@ int hrtimer_cancel(FAR hrtimer_t *hrtimer)
       hrtimer_remove(hrtimer);
     }
 
-  /* Mark timer as cancelled */
+  /* If the timer was running, increment its expiration count to prevent
+   * it from being re-armed by the callback.
+   */
 
-  hrtimer->expired = UINT64_MAX;
+  hrtimer->expired++;
 
   /* If the canceled timer was the earliest one, update the hardware timer */
 

Reply via email to