author | Jeff Chua
<jeff.chua.linux@gmail.com> 2010-05-23 23:16:24 UTC |
committer | Thomas Gleixner
<tglx@linutronix.de> 2010-05-24 10:10:23 UTC |
parent | bd45b7a385c5ffd82c11a1d51880be18559e5ad9 |
kernel/timer.c | +4 | -3 |
diff --git a/kernel/timer.c b/kernel/timer.c index 9199f3c5221..be394af5bc2 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -750,13 +750,14 @@ unsigned long apply_slack(struct timer_list *timer, unsigned long expires) unsigned long expires_limit, mask; int bit; - expires_limit = expires + timer->slack; + expires_limit = expires; - if (timer->slack < 0) /* auto slack: use 0.4% */ + if (timer->slack > -1) + expires_limit = expires + timer->slack; + else if (time_after(expires, jiffies)) /* auto slack: use 0.4% */ expires_limit = expires + (expires - jiffies)/256; mask = expires ^ expires_limit; - if (mask == 0) return expires;