VDSO_HRES and VDSO_RAW clocks are handled the same way. Don't duplicate code.
Before the patch: clock-getres-monotonic-raw: vdso: 737 nsec/call clock-getres-monotonic-coarse: vdso: 753 nsec/call clock-getres-monotonic: vdso: 691 nsec/call After the patch: clock-getres-monotonic-raw: vdso: 715 nsec/call clock-getres-monotonic-coarse: vdso: 715 nsec/call clock-getres-monotonic: vdso: 714 nsec/call Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr> Reviewed-by: Andy Lutomirski <l...@kernel.org> --- lib/vdso/gettimeofday.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c index d75e44ba716f..decd3f2b37af 100644 --- a/lib/vdso/gettimeofday.c +++ b/lib/vdso/gettimeofday.c @@ -184,7 +184,6 @@ static __maybe_unused int __cvdso_clock_getres_common(clockid_t clock, struct __kernel_timespec *res) { const struct vdso_data *vd = __arch_get_vdso_data(); - u64 hrtimer_res; u32 msk; u64 ns; @@ -192,27 +191,21 @@ int __cvdso_clock_getres_common(clockid_t clock, struct __kernel_timespec *res) if (unlikely((u32) clock >= MAX_CLOCKS)) return -1; - hrtimer_res = READ_ONCE(vd[CS_HRES_COARSE].hrtimer_res); /* * Convert the clockid to a bitmask and use it to check which * clocks are handled in the VDSO directly. */ msk = 1U << clock; - if (msk & VDSO_HRES) { + if (msk & (VDSO_HRES | VDSO_RAW)) { /* * Preserves the behaviour of posix_get_hrtimer_res(). */ - ns = hrtimer_res; + ns = READ_ONCE(vd[CS_HRES_COARSE].hrtimer_res); } else if (msk & VDSO_COARSE) { /* * Preserves the behaviour of posix_get_coarse_res(). */ ns = LOW_RES_NSEC; - } else if (msk & VDSO_RAW) { - /* - * Preserves the behaviour of posix_get_hrtimer_res(). - */ - ns = hrtimer_res; } else { return -1; } -- 2.13.3