46 lines
1.4 KiB
Diff
46 lines
1.4 KiB
Diff
From: Thomas Gleixner <tglx@linutronix.de>
|
|
Date: Fri, 22 Dec 2017 15:51:14 +0100
|
|
Subject: [PATCH 3/4] timer: Invoke timer_start_debug() where it makes sense
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.8-rt9.tar.xz
|
|
|
|
The timer start debug function is called before the proper timer base is
|
|
set. As a consequence the trace data contains the stale CPU and flags
|
|
values.
|
|
|
|
Call the debug function after setting the new base and flags.
|
|
|
|
Fixes: 500462a9de65 ("timers: Switch to a non-cascading wheel")
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
Cc: stable@vger.kernel.org
|
|
Cc: rt@linutronix.de
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
kernel/time/timer.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
|
|
index fdfaf4f3bcfa..a4d095e1010e 100644
|
|
--- a/kernel/time/timer.c
|
|
+++ b/kernel/time/timer.c
|
|
@@ -982,8 +982,6 @@ __mod_timer(struct timer_list *timer, unsigned long expires, bool pending_only)
|
|
if (!ret && pending_only)
|
|
goto out_unlock;
|
|
|
|
- debug_activate(timer, expires);
|
|
-
|
|
new_base = get_target_base(base, timer->flags);
|
|
|
|
if (base != new_base) {
|
|
@@ -1007,6 +1005,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires, bool pending_only)
|
|
}
|
|
}
|
|
|
|
+ debug_activate(timer, expires);
|
|
+
|
|
timer->expires = expires;
|
|
/*
|
|
* If 'idx' was calculated above and the base time did not advance
|
|
--
|
|
2.15.1
|
|
|