Skip to contentSkip to conversation

strace tests fail because of "y2038: socket: Add compat_sys_recvmmsg_time64"

-next Heiko Carstens 2 participants 5 messages Dec 17, 2018 – Dec 18, 2018

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

Hi Arnd,

in linux-next as of today 16 strace self tests fail on s390. I could bisect this to b136972b063b ("y2038: socket: Add compat_sys_recvmmsg_time64").

The following tests fail:

mmsg.gen.test
clock.gen.test
regex.gen.test
sched.gen.test
trace_fstatfs.gen.test
trace_personality_regex_64.gen.test
trace_fstat.gen.test
trace_personality_32.gen.test
trace_question.gen.test
trace_personality_regex_32.gen.test
trace_personality_64.gen.test
trace_stat.gen.test
trace_statfs.gen.test
trace_lstat.gen.test
trace_stat_like.gen.test
trace_statfs_like.gen.test

If needed the s390 kernel config can be re-created with

make ARCH=s390 performance_defconfig

strace self tests can be reproduced with

Quoted 7 lines

git clone https://gitlab.com/strace/strace.git
cd strace
./bootstrap
./configure
make
cd tests
make check

#1 lore raw
Quoted 7 lines · Heiko Carstens

Hi Arnd,

in linux-next as of today 16 strace self tests fail on s390. I could bisect this to b136972b063b ("y2038: socket: Add compat_sys_recvmmsg_time64").

The following tests fail:

Hi Heiko,

Thanks for the report and sorry I broke things. I'll have a closer look tomorrow if I don't find it right away. I suppose the regression was in native system calls, not the compat syscalls with 31-bit user space, right?

Arnd

Quoted 31 lines

mmsg.gen.test
clock.gen.test
regex.gen.test
sched.gen.test
trace_fstatfs.gen.test
trace_personality_regex_64.gen.test
trace_fstat.gen.test
trace_personality_32.gen.test
trace_question.gen.test
trace_personality_regex_32.gen.test
trace_personality_64.gen.test
trace_stat.gen.test
trace_statfs.gen.test
trace_lstat.gen.test
trace_stat_like.gen.test
trace_statfs_like.gen.test

If needed the s390 kernel config can be re-created with

make ARCH=s390 performance_defconfig

strace self tests can be reproduced with

Quoted 7 lines

git clone https://gitlab.com/strace/strace.git
cd strace
./bootstrap
./configure
make
cd tests
make check

#2 lore raw
Quoted 9 lines · Arnd Bergmann
Quoted 6 lines · Heiko Carstens

Hi Arnd,

in linux-next as of today 16 strace self tests fail on s390. I could bisect this to b136972b063b ("y2038: socket: Add compat_sys_recvmmsg_time64").

Quoted 8 lines
Quoted 1 line

The following tests fail:

Hi Heiko,

Thanks for the report and sorry I broke things. I'll have a closer look tomorrow if I don't find it right away. I suppose the regression was in native system calls, not the compat syscalls with 31-bit user space, right?

I found a bug in my patch by inspection. Can you try if the patch below makes it all work (apologies for the garbled whitespace), I'm considering a rewrite of that function now (to split it into two again), but want to make sure there isn't another problem in my original patch.

Arnd

----

net/socket.c +3 -3
index 3bb2ee083f97..7f9f225d0b6c 100644
@@ -2486,12 +2486,12 @@ int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg,
         return -EFAULT;
 
     if (!timeout && !timeout32)
-        do_recvmmsg(fd, mmsg, vlen, flags, NULL);
+        return do_recvmmsg(fd, mmsg, vlen, flags, NULL);
 
     datagrams = do_recvmmsg(fd, mmsg, vlen, flags, &timeout_sys);
 
-    if (!datagrams)
-        return 0;
+    if (datagrams <= 0)
+        return datagrams;
 
     if (timeout && put_timespec64(&timeout_sys, timeout))
         datagrams = -EFAULT;
#3 lore raw
Quoted 10 lines · Arnd Bergmann
Quoted 9 lines · Arnd Bergmann
Quoted 6 lines · Heiko Carstens

Hi Arnd,

in linux-next as of today 16 strace self tests fail on s390. I could bisect this to b136972b063b ("y2038: socket: Add compat_sys_recvmmsg_time64").

Quoted 8 lines
Quoted 8 lines
Quoted 1 line

The following tests fail:

Hi Heiko,

Thanks for the report and sorry I broke things. I'll have a closer look tomorrow if I don't find it right away. I suppose the regression was in native system calls, not the compat syscalls with 31-bit user space, right?

Yes, I was talking about 64 bit native system calls.

Quoted 5 lines

I found a bug in my patch by inspection. Can you try if the patch below makes it all work (apologies for the garbled whitespace), I'm considering a rewrite of that function now (to split it into two again), but want to make sure there isn't another problem in my original patch.

With your patch below applied, the tests pass again.

Thanks!

Quoted 22 lines

----

net/socket.c +3 -3
index 3bb2ee083f97..7f9f225d0b6c 100644
@@ -2486,12 +2486,12 @@ int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg,
         return -EFAULT;
 
     if (!timeout && !timeout32)
-        do_recvmmsg(fd, mmsg, vlen, flags, NULL);
+        return do_recvmmsg(fd, mmsg, vlen, flags, NULL);
 
     datagrams = do_recvmmsg(fd, mmsg, vlen, flags, &timeout_sys);
 
-    if (!datagrams)
-        return 0;
+    if (datagrams <= 0)
+        return datagrams;
 
     if (timeout && put_timespec64(&timeout_sys, timeout))
         datagrams = -EFAULT;
#4 lore raw
Quoted 23 lines · Heiko Carstens
Quoted 10 lines · Arnd Bergmann
Quoted 9 lines · Arnd Bergmann
Quoted 6 lines · Heiko Carstens

Hi Arnd,

in linux-next as of today 16 strace self tests fail on s390. I could bisect this to b136972b063b ("y2038: socket: Add compat_sys_recvmmsg_time64").

Quoted 8 lines
Quoted 8 lines
Quoted 1 line

The following tests fail:

Hi Heiko,

Thanks for the report and sorry I broke things. I'll have a closer look tomorrow if I don't find it right away. I suppose the regression was in native system calls, not the compat syscalls with 31-bit user space, right?

Yes, I was talking about 64 bit native system calls.

Quoted 7 lines
Quoted 5 lines

I found a bug in my patch by inspection. Can you try if the patch below makes it all work (apologies for the garbled whitespace), I'm considering a rewrite of that function now (to split it into two again), but want to make sure there isn't another problem in my original patch.

With your patch below applied, the tests pass again.

Ok, thanks for testing, I've pushed out the fixed version of that branch now.

Arnd