Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

vdso/gettimeofday: Add a helper to test if a clock is namespaced

Currently this logic is duplicate multiple times.

Add a helper for it to make the code more readable.

[ bp: Add a missing clocksource.h include, see
https://lore.kernel.org/r/20260311113435-f72f81d8-33a6-4a0f-bd80-4997aad068cc@linutronix.de ]

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-3-c848b4bc4850@linutronix.de

authored by

Thomas Weißschuh and committed by
Borislav Petkov (AMD)
a657bebd ed78b7b2

+10 -7
+7 -1
include/vdso/helpers.h
··· 6 6 7 7 #include <asm/barrier.h> 8 8 #include <vdso/datapage.h> 9 + #include <vdso/clocksource.h> 10 + 11 + static __always_inline bool vdso_is_timens_clock(const struct vdso_clock *vc) 12 + { 13 + return IS_ENABLED(CONFIG_TIME_NS) && vc->clock_mode == VDSO_CLOCKMODE_TIMENS; 14 + } 9 15 10 16 static __always_inline u32 vdso_read_begin(const struct vdso_clock *vc) 11 17 { ··· 37 31 static __always_inline bool vdso_read_begin_timens(const struct vdso_clock *vc, u32 *seq) 38 32 { 39 33 while (unlikely((*seq = READ_ONCE(vc->seq)) & 1)) { 40 - if (IS_ENABLED(CONFIG_TIME_NS) && vc->clock_mode == VDSO_CLOCKMODE_TIMENS) 34 + if (vdso_is_timens_clock(vc)) 41 35 return true; 42 36 cpu_relax(); 43 37 }
+3 -6
lib/vdso/gettimeofday.c
··· 343 343 } 344 344 345 345 if (unlikely(tz != NULL)) { 346 - if (IS_ENABLED(CONFIG_TIME_NS) && 347 - vc->clock_mode == VDSO_CLOCKMODE_TIMENS) 346 + if (vdso_is_timens_clock(vc)) 348 347 vd = __arch_get_vdso_u_timens_data(vd); 349 348 350 349 tz->tz_minuteswest = vd[CS_HRES_COARSE].tz_minuteswest; ··· 366 367 const struct vdso_clock *vc = vd->clock_data; 367 368 __kernel_old_time_t t; 368 369 369 - if (IS_ENABLED(CONFIG_TIME_NS) && 370 - vc->clock_mode == VDSO_CLOCKMODE_TIMENS) { 370 + if (vdso_is_timens_clock(vc)) { 371 371 vd = __arch_get_vdso_u_timens_data(vd); 372 372 vc = vd->clock_data; 373 373 } ··· 397 399 if (!vdso_clockid_valid(clock)) 398 400 return false; 399 401 400 - if (IS_ENABLED(CONFIG_TIME_NS) && 401 - vc->clock_mode == VDSO_CLOCKMODE_TIMENS) 402 + if (vdso_is_timens_clock(vc)) 402 403 vd = __arch_get_vdso_u_timens_data(vd); 403 404 404 405 /*