kernel_optimize_test/kernel/time
Frederic Weisbecker e2a71bdea8 timer: Fix wheel index calculation on last level
When an expiration delta falls into the last level of the wheel, that delta
has be compared against the maximum possible delay and reduced to fit in if
necessary.

However instead of comparing the delta against the maximum, the code
compares the actual expiry against the maximum. Then instead of fixing the
delta to fit in, it sets the maximum delta as the expiry value.

This can result in various undesired outcomes, the worst possible one
being a timer expiring 15 days ahead to fire immediately.

Fixes: 500462a9de ("timers: Switch to a non-cascading wheel")
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20200717140551.29076-2-frederic@kernel.org
2020-07-17 21:44:05 +02:00
..
alarmtimer.c
clockevents.c
clocksource.c clocksource: Remove obsolete ifdef 2020-06-09 16:36:47 +02:00
hrtimer.c hrtimer: Don't dereference the hrtimer pointer after the callback 2020-04-01 13:20:14 +02:00
itimer.c
jiffies.c timekeeping: Split jiffies seqlock 2020-03-21 16:00:23 +01:00
Kconfig
Makefile
namespace.c nsproxy: add struct nsset 2020-05-09 13:57:12 +02:00
ntp_internal.h
ntp.c
posix-clock.c
posix-cpu-timers.c posix-cpu-timers: Replace __get_task_for_clock with pid_for_clock 2020-04-29 08:14:41 -05:00
posix-stubs.c
posix-timers.c posix-timers: Pass lockdep expression to RCU lists 2020-02-17 20:12:19 +01:00
posix-timers.h
sched_clock.c time/sched_clock: Expire timer in hardirq context 2020-03-19 09:45:08 +01:00
test_udelay.c
tick-broadcast-hrtimer.c
tick-broadcast.c
tick-common.c timekeeping: Split jiffies seqlock 2020-03-21 16:00:23 +01:00
tick-internal.h
tick-oneshot.c
tick-sched.c lockdep: Annotate irq_work 2020-03-21 16:00:24 +01:00
tick-sched.h
time.c y2038: remove unused time32 interfaces 2020-02-21 11:22:15 -08:00
timeconst.bc
timeconv.c
timecounter.c
timekeeping_debug.c
timekeeping_internal.h
timekeeping.c x86/mce: Address objtools noinstr complaints 2020-06-11 15:15:02 +02:00
timekeeping.h timekeeping: Split jiffies seqlock 2020-03-21 16:00:23 +01:00
timer_list.c
timer.c timer: Fix wheel index calculation on last level 2020-07-17 21:44:05 +02:00
vsyscall.c lib/vdso: Avoid highres update if clocksource is not VDSO capable 2020-02-17 20:12:17 +01:00