diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2017-12-22 09:51:14 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-12-29 17:13:10 -0500 |
commit | fd45bb77ad682be728d1002431d77b8c73342836 (patch) | |
tree | 969fef59384ceb7b90b9b96082637822f4b4446f | |
parent | 5d62c183f9e9df1deeea0906d099a94e8a43047a (diff) |
timers: Invoke timer_start_debug() where it makes sense
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: Peter Zijlstra <peterz@infradead.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Sebastian Siewior <bigeasy@linutronix.de>
Cc: stable@vger.kernel.org
Cc: rt@linutronix.de
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
Link: https://lkml.kernel.org/r/20171222145337.792907137@linutronix.de
-rw-r--r-- | kernel/time/timer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 6be576e02209..89a9e1b4264a 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c | |||
@@ -1007,8 +1007,6 @@ __mod_timer(struct timer_list *timer, unsigned long expires, unsigned int option | |||
1007 | if (!ret && (options & MOD_TIMER_PENDING_ONLY)) | 1007 | if (!ret && (options & MOD_TIMER_PENDING_ONLY)) |
1008 | goto out_unlock; | 1008 | goto out_unlock; |
1009 | 1009 | ||
1010 | debug_activate(timer, expires); | ||
1011 | |||
1012 | new_base = get_target_base(base, timer->flags); | 1010 | new_base = get_target_base(base, timer->flags); |
1013 | 1011 | ||
1014 | if (base != new_base) { | 1012 | if (base != new_base) { |
@@ -1032,6 +1030,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires, unsigned int option | |||
1032 | } | 1030 | } |
1033 | } | 1031 | } |
1034 | 1032 | ||
1033 | debug_activate(timer, expires); | ||
1034 | |||
1035 | timer->expires = expires; | 1035 | timer->expires = expires; |
1036 | /* | 1036 | /* |
1037 | * If 'idx' was calculated above and the base time did not advance | 1037 | * If 'idx' was calculated above and the base time did not advance |