summaryrefslogtreecommitdiffstats
path: root/kernel/time
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2024-03-17 20:19:02 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2024-03-17 20:19:02 +0100
commit8048ba24e1e678c595ceec76fed7c0c14f9cab1e (patch)
treead3cda6e60a0ae6dbe291bc10ffbf4edcd9eabfd /kernel/time
parentMerge tag 'perf-urgent-2024-03-17' of git://git.kernel.org/pub/scm/linux/kern... (diff)
parenttimer/migration: Remove buggy early return on deactivation (diff)
downloadlinux-8048ba24e1e678c595ceec76fed7c0c14f9cab1e.tar.xz
linux-8048ba24e1e678c595ceec76fed7c0c14f9cab1e.zip
Merge tag 'timers-urgent-2024-03-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fix from Ingo Molnar: "Fix timer migration bug that can result in long bootup delays and other oddities" * tag 'timers-urgent-2024-03-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: timer/migration: Remove buggy early return on deactivation
Diffstat (limited to 'kernel/time')
-rw-r--r--kernel/time/timer_migration.c20
1 files changed, 0 insertions, 20 deletions
diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c
index 8f49b6b96dfd..611cd904f035 100644
--- a/kernel/time/timer_migration.c
+++ b/kernel/time/timer_migration.c
@@ -751,26 +751,6 @@ bool tmigr_update_events(struct tmigr_group *group, struct tmigr_group *child,
first_childevt = evt = data->evt;
- /*
- * Walking the hierarchy is required in any case when a
- * remote expiry was done before. This ensures to not lose
- * already queued events in non active groups (see section
- * "Required event and timerqueue update after a remote
- * expiry" in the documentation at the top).
- *
- * The two call sites which are executed without a remote expiry
- * before, are not prevented from propagating changes through
- * the hierarchy by the return:
- * - When entering this path by tmigr_new_timer(), @evt->ignore
- * is never set.
- * - tmigr_inactive_up() takes care of the propagation by
- * itself and ignores the return value. But an immediate
- * return is required because nothing has to be done in this
- * level as the event could be ignored.
- */
- if (evt->ignore && !remote)
- return true;
-
raw_spin_lock(&group->lock);
childstate.state = 0;