diff options
| author | Thomas Gleixner <tglx@kernel.org> | 2026-08-18 00:14:57 +0200 |
|---|---|---|
| committer | Thomas Gleixner <tglx@kernel.org> | 2026-08-18 10:51:43 +0200 |
| commit | c793bbfc4a0a9f5a66978fc91559e9681748dbeb (patch) | |
| tree | 7de0cbb37b9563687f17d3d9f5c6199c60f546f2 /kernel | |
| parent | 8d3ae59288f1e7d58d76558a6ee96d533bc5019f (diff) | |
timer: Keep debugobjects state consistent in migrate_timer_list()
When timers are migrated away from an offline CPU the debugobjects state
gets corrupted. The timer is accounted as inactive on deletion, but the
enqueue on the alive CPU lacks the activation call.
That used to work, but got broken when the trace point and the debug
objects call got separated. That change missed to fixup
migrate_timer_list().
Add the missing debug_timer_activate() invocation to fix it.
Fixes: dc1e7dc5ac62 ("timer: Move trace point to get proper index")
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/87bjb0l7ha.ffs@fw13
Diffstat (limited to 'kernel')
| -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 655a8c6cd84d..ae9abf14688e 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -2492,6 +2492,7 @@ static void migrate_timer_list(struct timer_base *new_base, struct hlist_head *h timer = hlist_entry(head->first, struct timer_list, entry); detach_timer(timer, false); timer->flags = (timer->flags & ~TIMER_BASEMASK) | cpu; + debug_timer_activate(timer); internal_add_timer(new_base, timer); } } |
