diff options
| author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-05-16 06:49:28 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-05-16 06:49:28 -0700 |
| commit | 1924110d216ced8013580bcf9a90506741ed2b09 (patch) | |
| tree | 8e8890098633b0fa8ecf49091aa83d02152a6129 | |
| parent | 647e9bf427ff68ea7b48a499383fc133616e210a (diff) | |
| parent | 1ef28deec05881286bfe2cabe835f9a7c7e1bd6b (diff) | |
Merge "timer: Clear deferrable_pending while handling timer softirq"
| -rw-r--r-- | kernel/time/timer.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 8315d4d72cc3..75ce9cbc313d 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -151,10 +151,11 @@ static inline struct tvec_base *get_target_base(struct tvec_base *base, static inline void __run_deferrable_timers(void) { - if (time_after_eq(jiffies, tvec_base_deferrable.timer_jiffies)) { - if ((atomic_cmpxchg(&deferrable_pending, 1, 0) && - tick_do_timer_cpu == TICK_DO_TIMER_NONE) || - tick_do_timer_cpu == smp_processor_id()) + if ((atomic_cmpxchg(&deferrable_pending, 1, 0) && + tick_do_timer_cpu == TICK_DO_TIMER_NONE) || + tick_do_timer_cpu == smp_processor_id()) { + if (time_after_eq(jiffies, + tvec_base_deferrable.timer_jiffies)) __run_timers(&tvec_base_deferrable); } } |
