According to __internal_add_timer(), in _next_timer_interrupt(), when 'tv1.vec' find one, but need 'cascade bucket(s)', we still need find each slot of 'tv*.vec'.
So need reset variable 'found', so can fully scan ''do {...} while()'' for 'tv*.vec'. Signed-off-by: Chen Gang <gang.c...@asianux.com> --- kernel/timer.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/timer.c b/kernel/timer.c index aa8b964..0fce618 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -1197,7 +1197,7 @@ static unsigned long __next_timer_interrupt(struct tvec_base *base) { unsigned long timer_jiffies = base->timer_jiffies; unsigned long expires = timer_jiffies + NEXT_TIMER_MAX_DELTA; - int index, slot, array, found = 0; + int index, slot, array; struct timer_list *nte; struct tvec *varray[4]; @@ -1208,7 +1208,6 @@ static unsigned long __next_timer_interrupt(struct tvec_base *base) if (tbase_get_deferrable(nte->base)) continue; - found = 1; expires = nte->expires; /* Look at the cascade bucket(s)? */ if (!index || slot < index) @@ -1232,6 +1231,7 @@ cascade: for (array = 0; array < 4; array++) { struct tvec *varp = varray[array]; + bool found = false; index = slot = timer_jiffies & TVN_MASK; do { @@ -1239,7 +1239,7 @@ cascade: if (tbase_get_deferrable(nte->base)) continue; - found = 1; + found = true; if (time_before(nte->expires, expires)) expires = nte->expires; } -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/