int __mod_timer(struct timer_list *timer, unsigned long expires){	tvec_base_t *old_base, *new_base;	unsigned long flags;	int ret = 0;	BUG_ON(!timer->function);	check_timer(timer);	spin_lock_irqsave(&timer->lock, flags);	new_base = &__get_cpu_var(tvec_bases);repeat:	old_base = timer->base;	/*	 * Prevent deadlocks via ordering by old_base < new_base.	 */	if (old_base && (new_base != old_base)) {		if (old_base < new_base) {			spin_lock(&new_base->lock);			spin_lock(&old_base->lock);		} else {			spin_lock(&old_base->lock);			spin_lock(&new_base->lock);		}		/*		 * The timer base might have been cancelled while we were		 * trying to take the lock(s):		 */		if (timer->base != old_base) {			spin_unlock(&new_base->lock);			spin_unlock(&old_base->lock);			goto repeat;		}	} else {		spin_lock(&new_base->lock);		if (timer->base != old_base) {			spin_unlock(&new_base->lock);			goto repeat;		}	}	/*	 * Delete the previous timeout (if there was any), and install	 * the new one:	 */	if (old_base) {		list_del(&timer->entry);		ret = 1;	}	timer->expires = expires;	internal_add_timer(new_base, timer);	timer->base = new_base;	if (old_base && (new_base != old_base))		spin_unlock(&old_base->lock);	spin_unlock(&new_base->lock);	spin_unlock_irqrestore(&timer->lock, flags);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/55c888d6d09a0df236adfaf8ccf06ff5d0646775/timer.c/clean/kernel/timer.c