*/
 void add_timer(struct timer_list *timer)
 {
-       BUG_ON(timer_pending(timer));
+       if (WARN_ON_ONCE(timer_pending(timer)))
+               return;
        __mod_timer(timer, timer->expires, MOD_TIMER_NOTPENDING);
 }
 EXPORT_SYMBOL(add_timer);
        struct timer_base *new_base, *base;
        unsigned long flags;
 
-       BUG_ON(timer_pending(timer) || !timer->function);
+       if (WARN_ON_ONCE(timer_pending(timer) || !timer->function))
+               return;
 
        new_base = get_timer_cpu_base(timer->flags, cpu);
 
        struct timer_base *new_base;
        int b, i;
 
-       BUG_ON(cpu_online(cpu));
-
        for (b = 0; b < NR_BASES; b++) {
                old_base = per_cpu_ptr(&timer_bases[b], cpu);
                new_base = get_cpu_ptr(&timer_bases[b]);
                 */
                forward_timer_base(new_base);
 
-               BUG_ON(old_base->running_timer);
+               WARN_ON_ONCE(old_base->running_timer);
+               old_base->running_timer = NULL;
 
                for (i = 0; i < WHEEL_SIZE; i++)
                        migrate_timer_list(new_base, old_base->vectors + i);