]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
vdso/gettimeofday: Move the unlikely() into vdso_read_retry()
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Fri, 27 Feb 2026 06:43:23 +0000 (07:43 +0100)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 11 Mar 2026 14:12:05 +0000 (15:12 +0100)
All callers of vdso_read_retry() test its return value with unlikely().
Move the unlikely into the helper to make the code easier to read.
This is equivalent to the retry function of non-vDSO seqlocks.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://patch.msgid.link/20260227-vdso-cleanups-v1-4-c848b4bc4850@linutronix.de
include/vdso/helpers.h
lib/vdso/gettimeofday.c

index 4d35877dff5f84cdfb5e66dba478f60b00ea2159..197d233667c28154940a2ad1614958eff2936491 100644 (file)
@@ -53,7 +53,7 @@ static __always_inline u32 vdso_read_retry(const struct vdso_clock *vc,
 
        smp_rmb();
        seq = READ_ONCE(vc->seq);
-       return seq != start;
+       return unlikely(seq != start);
 }
 
 static __always_inline void vdso_write_seq_begin(struct vdso_clock *vc)
index 2faed7851635442cd0395067d33a44ad98115a82..efd1b82af614f4490460bae90da1e54f72f47077 100644 (file)
@@ -135,7 +135,7 @@ bool do_hres_timens(const struct vdso_time_data *vdns, const struct vdso_clock *
 
                if (!vdso_get_timestamp(vd, vc, clk, &sec, &ns))
                        return false;
-       } while (unlikely(vdso_read_retry(vc, seq)));
+       } while (vdso_read_retry(vc, seq));
 
        /* Add the namespace offset */
        sec += offs->sec;
@@ -163,7 +163,7 @@ bool do_hres(const struct vdso_time_data *vd, const struct vdso_clock *vc,
 
                if (!vdso_get_timestamp(vd, vc, clk, &sec, &ns))
                        return false;
-       } while (unlikely(vdso_read_retry(vc, seq)));
+       } while (vdso_read_retry(vc, seq));
 
        vdso_set_timespec(ts, sec, ns);
 
@@ -188,7 +188,7 @@ bool do_coarse_timens(const struct vdso_time_data *vdns, const struct vdso_clock
                seq = vdso_read_begin(vc);
                sec = vdso_ts->sec;
                nsec = vdso_ts->nsec;
-       } while (unlikely(vdso_read_retry(vc, seq)));
+       } while (vdso_read_retry(vc, seq));
 
        /* Add the namespace offset */
        sec += offs->sec;
@@ -212,7 +212,7 @@ bool do_coarse(const struct vdso_time_data *vd, const struct vdso_clock *vc,
 
                ts->tv_sec = vdso_ts->sec;
                ts->tv_nsec = vdso_ts->nsec;
-       } while (unlikely(vdso_read_retry(vc, seq)));
+       } while (vdso_read_retry(vc, seq));
 
        return true;
 }
@@ -244,7 +244,7 @@ bool do_aux(const struct vdso_time_data *vd, clockid_t clock, struct __kernel_ti
 
                if (!vdso_get_timestamp(vd, vc, VDSO_BASE_AUX, &sec, &ns))
                        return false;
-       } while (unlikely(vdso_read_retry(vc, seq)));
+       } while (vdso_read_retry(vc, seq));
 
        vdso_set_timespec(ts, sec, ns);