diff options
author | Anna-Maria Behnsen <anna-maria@linutronix.de> | 2022-04-05 21:17:31 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2022-04-09 22:19:39 +0200 |
commit | 2731aa7d65dbb31c6dad14347c37d522bb3bc7c6 (patch) | |
tree | 19a19ee5e63bed751b21aea801939d1c746d174f /kernel/time/timer.c | |
parent | timers: Fix warning condition in __run_timers() (diff) | |
download | linux-2731aa7d65dbb31c6dad14347c37d522bb3bc7c6.tar.xz linux-2731aa7d65dbb31c6dad14347c37d522bb3bc7c6.zip |
timers: Initialize base::next_expiry_recalc in timers_prepare_cpu()
When base::next_expiry_recalc is not initialized to false during cpu
bringup in HOTPLUG_CPU and is accidently true and no timer is queued in the
meantime, the loop through the wheel to find __next_timer_interrupt() might
be done for nothing.
Therefore initialize base::next_expiry_recalc to false in
timers_prepare_cpu().
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Link: https://lore.kernel.org/r/20220405191732.7438-2-anna-maria@linutronix.de
Diffstat (limited to 'kernel/time/timer.c')
-rw-r--r-- | kernel/time/timer.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 9dd2a39cb3b0..204d6cd83d0e 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1953,6 +1953,7 @@ int timers_prepare_cpu(unsigned int cpu) base = per_cpu_ptr(&timer_bases[b], cpu); base->clk = jiffies; base->next_expiry = base->clk + NEXT_TIMER_MAX_DELTA; + base->next_expiry_recalc = false; base->timers_pending = false; base->is_idle = false; } |