strace tests fail because of "y2038: socket: Add compat_sys_recvmmsg_time64"
Subsystems (4)
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
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: Addcompat_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.testIf needed the s390 kernel config can be re-created with
make ARCH=s390
performance_defconfigstrace 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
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: Addcompat_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
@@ -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 ;
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: Addcompat_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@@ -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 ;
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: Addcompat_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