[PATCH 06/14] vdso/gettimeofday: Return bool from clock_gettime() helpers

Thomas Weißschuh thomas.weissschuh at linutronix.de
Wed Jul 16 06:23:24 PDT 2025


On Wed, Jul 16, 2025 at 01:50:22PM +0100, Mark Brown wrote:
> On Wed, Jul 16, 2025 at 02:34:52PM +0200, Thomas Weißschuh wrote:
> > On Wed, Jul 16, 2025 at 01:25:06PM +0100, Mark Brown wrote:
> 
> > > This issue has been present in -next for a week and is causing a bunch
> > > of disruption to tests that end up relying on the vDSO - do we have any
> > > news on getting a fix merged?  Perhaps it makes sense for Marek to just
> > > send his patch so that it's there if needed?
> 
> > That fix has been in -next since next-20250710.
> > If you still have issues, I'll take a look.
> 
> Ah, sorry - I'd not seen followup mails in the thread and was still
> seeing issues that appeared at the same time that had previously
> bisected here.  One is:
> 
> | INFO: Generating a skipfile based on /lava-4170058/1/tests/6_kselftest-dev-errlogs/automated/linux/kselftest/skipfile-lkft.yaml
> | fatal error: nanotime returning zero
> | goroutine 1 [running, locked to thread]:
> | runtime.throw(0x132d83, 0x17)
> | 	/usr/lib/golang/src/runtime/panic.go:774 +0x5c fp=0x42c7a4 sp=0x42c790 pc=0x3b740
> | runtime.main()
> | 	/usr/lib/golang/src/runtime/proc.go:152 +0x350 fp=0x42c7e4 sp=0x42c7a4 pc=0x3d308
> |A runtime.goexit()
> | 	/usr/lib/golang/src/runtime/asm_arm.s:868 +0x4 fp=0x42c7e4 sp=0x42c7e4 pc=0x645dc
> | ERROR: skipgen failed to generate a skipfile: 2
> 
> I'll just kick of a clean bisect for that and see what it comes up with.

Can you try the following?
I missed this despite the double-checking after the last reported issue.

diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index 97aa9059a5c9..5e0106130e07 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -365,14 +365,14 @@ __cvdso_clock_gettime32_data(const struct vdso_time_data *vd, clockid_t clock,
                             struct old_timespec32 *res)
 {
        struct __kernel_timespec ts;
-       int ret;
+       bool ok;
 
-       ret = __cvdso_clock_gettime_common(vd, clock, &ts);
+       ok = __cvdso_clock_gettime_common(vd, clock, &ts);
 
-       if (unlikely(ret))
+       if (unlikely(!ok))
                return clock_gettime32_fallback(clock, res);
 
-       /* For ret == 0 */
+       /* For ok == true */
        res->tv_sec = ts.tv_sec;
        res->tv_nsec = ts.tv_nsec;


Sorry for all the breakage.


Thomas



More information about the linux-arm-kernel mailing list