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 <[email protected]>
---
 lib/vdso/gettimeofday.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index e0f289d3d110..b8c1fc85eb74 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -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;

-- 
2.55.0


Reply via email to