On Tue, Nov 11, 2025 at 01:59:02PM +0100, Arnd Bergmann wrote:
> On Tue, Nov 11, 2025, at 11:49, Thomas Weißschuh wrote:
> > The 32-bit time variants on musl have different names, provide a fallback.
> >
> > Signed-off-by: Thomas Weißschuh <[email protected]>
> > ---
> >  tools/testing/selftests/vDSO/vdso_test_abi.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/tools/testing/selftests/vDSO/vdso_test_abi.c 
> > b/tools/testing/selftests/vDSO/vdso_test_abi.c
> > index 
> > bb5a5534ae7e8a46d7e68a561684c29a752b866d..0a6b16a21369642384d43b0efd1bca227a2a4298
> >  
> > 100644
> > --- a/tools/testing/selftests/vDSO/vdso_test_abi.c
> > +++ b/tools/testing/selftests/vDSO/vdso_test_abi.c
> > @@ -166,7 +166,11 @@ static void 
> > vdso_test_clock_getres(__kernel_clockid_t clk_id)
> >             clock_getres_fail++;
> >     }
> > 
> > +#ifdef SYS_clock_getres
> >     ret = syscall(SYS_clock_getres, clk_id, &sys_ts);
> > +#else
> > +   ret = syscall(SYS_clock_getres_time32, clk_id, &sys_ts);
> > +#endif
> > 
> 
> I think this #ifdef check is not reliable enough and may hide
> bugs. As with the other syscalls, the best way to call these
> is to either use __NR_clock_getres_time64 on __kernel_timespec, or
> to use __NR_clock_getres on __kernel_old_timespec.

Could you give an example for such a bug?

> If we are trying to validate the interface here, we should probably
> call both if available. If we just want to know the result and
> trust that both work correctly, I'd always use __NR_clock_getres_time64
> on 32-bit systems and __NR_clock_getres on 64-bit systems.

As these are vDSO and not timer selftests I think we trust the syscalls.
But how do we detect a native 64-bit time system? The preprocessor builtins
won't work as a 32-bit pointer system may use 64-bit time syscalls. I am not
aware of the UAPI #define, beyond the absence of __NR_clock_getres_time64.


Thomas

Reply via email to