From 8f64aa8a93b4dda0931016fb9f2770c2093dbc75 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Fri, 31 Mar 2006 02:30:31 -0800 Subject: [PATCH] --- yaml --- r: 24878 b: refs/heads/master c: a2c348fe0117adced11e374329a5ea3f7c43cb41 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/timer.c | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index b2cbd10119b2..cce648571225 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3691c5199e8a4be1c7a91b5ab925db5feb866e19 +refs/heads/master: a2c348fe0117adced11e374329a5ea3f7c43cb41 diff --git a/trunk/kernel/timer.c b/trunk/kernel/timer.c index b04dc03b5934..9062a82ee8ec 100644 --- a/trunk/kernel/timer.c +++ b/trunk/kernel/timer.c @@ -215,21 +215,19 @@ int __mod_timer(struct timer_list *timer, unsigned long expires) * handler yet has not finished. This also guarantees that * the timer is serialized wrt itself. */ - if (unlikely(base->running_timer == timer)) { - /* The timer remains on a former base */ - new_base = base; - } else { + if (likely(base->running_timer != timer)) { /* See the comment in lock_timer_base() */ timer->base = NULL; spin_unlock(&base->lock); - spin_lock(&new_base->lock); - timer->base = new_base; + base = new_base; + spin_lock(&base->lock); + timer->base = base; } } timer->expires = expires; - internal_add_timer(new_base, timer); - spin_unlock_irqrestore(&new_base->lock, flags); + internal_add_timer(base, timer); + spin_unlock_irqrestore(&base->lock, flags); return ret; }