Sorry forgot to save the change log before sending. v2: fix Signed-off-by chain
On Tue, 1 Jul 2025 at 15:23, Terry Tritton <[email protected]> wrote: > > Futex_waitv can not accept old_timespec32 struct, so userspace should > convert it from 32bit to 64bit before syscall in 32bit compatible mode. > > This fix is based off [1] > > Link: https://lore.kernel.org/all/[email protected]/ [1] > > Signed-off-by: Wei Gao <[email protected]> > Signed-off-by: Terry Tritton <[email protected]> > --- > .../testing/selftests/futex/include/futex2test.h | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/tools/testing/selftests/futex/include/futex2test.h > b/tools/testing/selftests/futex/include/futex2test.h > index ea79662405bc..6780e51eb2d6 100644 > --- a/tools/testing/selftests/futex/include/futex2test.h > +++ b/tools/testing/selftests/futex/include/futex2test.h > @@ -55,6 +55,13 @@ struct futex32_numa { > futex_t numa; > }; > > +#if !defined(__LP64__) > +struct timespec64 { > + int64_t tv_sec; > + int64_t tv_nsec; > +}; > +#endif > + > /** > * futex_waitv - Wait at multiple futexes, wake on any > * @waiters: Array of waiters > @@ -65,7 +72,15 @@ struct futex32_numa { > static inline int futex_waitv(volatile struct futex_waitv *waiters, unsigned > long nr_waiters, > unsigned long flags, struct timespec *timo, > clockid_t clockid) > { > +#if !defined(__LP64__) > + struct timespec64 timo64 = {0}; > + > + timo64.tv_sec = timo->tv_sec; > + timo64.tv_nsec = timo->tv_nsec; > + return syscall(__NR_futex_waitv, waiters, nr_waiters, flags, &timo64, > clockid); > +#else > return syscall(__NR_futex_waitv, waiters, nr_waiters, flags, timo, > clockid); > +#endif > } > > /* > -- > 2.39.5 >

