vdso/gettimeofday: Validate system call existence for time() and gettimeofday()

Not all architectures have the system calls for time() and
gettimeofday(). When the system call is missing, the vDSO function
should also not be present.

Validate that.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Link: https://patch.msgid.link/20260702-vdso-compat_32bit_time-v3-2-db9f36d8d432@linutronix.de
This commit is contained in:
Thomas Weißschuh 2026-07-02 10:21:26 +02:00 committed by Thomas Gleixner
parent dce21fb3d5
commit f8b9467725

View File

@ -12,6 +12,8 @@
#include <vdso/time32.h>
#include <vdso/time64.h>
#include <uapi/linux/unistd.h>
/*
* The generic vDSO implementation requires that gettimeofday.h
* provides:
@ -348,6 +350,10 @@ __cvdso_gettimeofday_data(const struct vdso_time_data *vd,
{
const struct vdso_clock *vc = vd->clock_data;
#ifndef __NR_gettimeofday
BUILD_BUG();
#endif
if (likely(tv != NULL)) {
struct __kernel_timespec ts;
@ -382,6 +388,10 @@ __cvdso_time_data(const struct vdso_time_data *vd, __kernel_old_time_t *time)
const struct vdso_clock *vc = vd->clock_data;
__kernel_old_time_t t;
#ifndef __NR_time
BUILD_BUG();
#endif
if (vdso_is_timens_clock(vc)) {
vd = vdso_timens_data(vd);
vc = vd->clock_data;