]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hrtimer: Simplify run_hrtimer_queues()
authorThomas Gleixner <tglx@kernel.org>
Tue, 24 Feb 2026 16:38:37 +0000 (17:38 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 27 Feb 2026 15:40:15 +0000 (16:40 +0100)
Replace the open coded container_of() orgy with a trivial
clock_base_next_timer() helper.

Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260224163431.532927977@kernel.org
kernel/time/hrtimer.c

index aa1cb4f8a473580e33d6deb0a9e959f75f11b58e..b0e7e29ade107d7c64d674138c70ada62e63e6d0 100644 (file)
@@ -1933,6 +1933,13 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base, struct hrtimer_cloc
        base->running = NULL;
 }
 
+static __always_inline struct hrtimer *clock_base_next_timer_safe(struct hrtimer_clock_base *base)
+{
+       struct timerqueue_node *next = timerqueue_getnext(&base->active);
+
+       return next ? container_of(next, struct hrtimer, node) : NULL;
+}
+
 static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now,
                                 unsigned long flags, unsigned int active_mask)
 {
@@ -1940,16 +1947,10 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now,
        struct hrtimer_clock_base *base;
 
        for_each_active_base(base, cpu_base, active) {
-               struct timerqueue_node *node;
-               ktime_t basenow;
-
-               basenow = ktime_add(now, base->offset);
-
-               while ((node = timerqueue_getnext(&base->active))) {
-                       struct hrtimer *timer;
-
-                       timer = container_of(node, struct hrtimer, node);
+               ktime_t basenow = ktime_add(now, base->offset);
+               struct hrtimer *timer;
 
+               while ((timer = clock_base_next_timer(base))) {
                        /*
                         * The immediate goal for using the softexpires is
                         * minimizing wakeups, not running timers at the