Thread (39 messages) 39 messages, 7 authors, 2025-08-20

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

From: Thomas Weißschuh <hidden>
Date: 2025-07-16 13:23:26
Also in: linux-arch, linux-kselftest, lkml
Subsystem: generic vdso library, library code, the rest · Maintainers: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Andrew Morton, Linus Torvalds

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:
quoted
On Wed, Jul 16, 2025 at 01:25:06PM +0100, Mark Brown wrote:
quoted
quoted
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?
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help