/* Reevaluate with jiffies_lock held */
        raw_spin_lock(&jiffies_lock);
+       if (ktime_before(now, tick_next_period)) {
+               raw_spin_unlock(&jiffies_lock);
+               return;
+       }
+
        write_seqcount_begin(&jiffies_seq);
 
-       delta = ktime_sub(now, last_jiffies_update);
-       if (delta >= tick_period) {
+       last_jiffies_update = ktime_add(last_jiffies_update, tick_period);
 
-               delta = ktime_sub(delta, tick_period);
-               last_jiffies_update = ktime_add(last_jiffies_update,
-                                               tick_period);
+       delta = ktime_sub(now, tick_next_period);
+       if (unlikely(delta >= tick_period)) {
+               /* Slow path for long idle sleep times */
+               s64 incr = ktime_to_ns(tick_period);
 
-               /* Slow path for long timeouts */
-               if (unlikely(delta >= tick_period)) {
-                       s64 incr = ktime_to_ns(tick_period);
+               ticks = ktime_divns(delta, incr);
 
-                       ticks = ktime_divns(delta, incr);
+               last_jiffies_update = ktime_add_ns(last_jiffies_update,
+                                                  incr * ticks);
+       }
 
-                       last_jiffies_update = ktime_add_ns(last_jiffies_update,
-                                                          incr * ticks);
-               }
-               do_timer(++ticks);
+       do_timer(++ticks);
+
+       /*
+        * Keep the tick_next_period variable up to date.  WRITE_ONCE()
+        * pairs with the READ_ONCE() in the lockless quick check above.
+        */
+       WRITE_ONCE(tick_next_period,
+                  ktime_add(last_jiffies_update, tick_period));
 
-               /*
-                * Keep the tick_next_period variable up to date.
-                * WRITE_ONCE() pairs with the READ_ONCE() in the lockless
-                * quick check above.
-                */
-               WRITE_ONCE(tick_next_period,
-                          ktime_add(last_jiffies_update, tick_period));
-       } else {
-               write_seqcount_end(&jiffies_seq);
-               raw_spin_unlock(&jiffies_lock);
-               return;
-       }
        write_seqcount_end(&jiffies_seq);
        raw_spin_unlock(&jiffies_lock);
        update_wall_time();