diff --git a/[refs] b/[refs] index 357571a492e6..56201c861ba1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bd45b7a385c5ffd82c11a1d51880be18559e5ad9 +refs/heads/master: f00e047efdf9d31c8a7dd7875b411f97cfa7d8e5 diff --git a/trunk/kernel/timer.c b/trunk/kernel/timer.c index 9199f3c52215..be394af5bc22 100644 --- a/trunk/kernel/timer.c +++ b/trunk/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;