On Mon, Dec 17, 2018 at 10:40 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Mon, Dec 17, 2018 at 2:06 PM Heiko Carstens > <heiko.carstens@xxxxxxxxxx> wrote: > > > > 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? 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 ---- diff --git a/net/socket.c b/net/socket.c index 3bb2ee083f97..7f9f225d0b6c 100644 --- a/net/socket.c +++ b/net/socket.c @@ -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;