diff options
Diffstat (limited to 'kernel/time/timer.c')
| -rw-r--r-- | kernel/time/timer.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 85f1021ad459..9dd2a39cb3b0 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1722,11 +1722,14 @@ static inline void __run_timers(struct timer_base *base)  	       time_after_eq(jiffies, base->next_expiry)) {  		levels = collect_expired_timers(base, heads);  		/* -		 * The only possible reason for not finding any expired -		 * timer at this clk is that all matching timers have been -		 * dequeued. +		 * The two possible reasons for not finding any expired +		 * timer at this clk are that all matching timers have been +		 * dequeued or no timer has been queued since +		 * base::next_expiry was set to base::clk + +		 * NEXT_TIMER_MAX_DELTA.  		 */ -		WARN_ON_ONCE(!levels && !base->next_expiry_recalc); +		WARN_ON_ONCE(!levels && !base->next_expiry_recalc +			     && base->timers_pending);  		base->clk++;  		base->next_expiry = __next_timer_interrupt(base);  | 
