summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@kernel.org>2026-08-18 00:14:57 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-09-07 17:18:25 +0200
commitf1a2f57598b5cc5f1d069ec17c9dfa8dce74101a (patch)
tree8d51d03b5512903936996f1e48bb8b19e2bd7bc2
parent4ba9cfffb9bbcdff638266481048a847a260c5af (diff)
downloadlinux-stable-f1a2f57598b5cc5f1d069ec17c9dfa8dce74101a.tar.gz
linux-stable-f1a2f57598b5cc5f1d069ec17c9dfa8dce74101a.zip
timer: Keep debugobjects state consistent in migrate_timer_list()
commit c793bbfc4a0a9f5a66978fc91559e9681748dbeb upstream. 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 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--kernel/time/timer.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index d3020e3e0319..666cb78c2482 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -2673,6 +2673,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);
}
}