]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
syscalls: fix compat_sys_io_pgetevents_time64 usage
authorArnd Bergmann <arnd@arndb.de>
Thu, 20 Jun 2024 12:16:37 +0000 (14:16 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Jul 2024 07:34:04 +0000 (09:34 +0200)
commit d3882564a77c21eb746ba5364f3fa89b88de3d61 upstream.

Using sys_io_pgetevents() as the entry point for compat mode tasks
works almost correctly, but misses the sign extension for the min_nr
and nr arguments.

This was addressed on parisc by switching to
compat_sys_io_pgetevents_time64() in commit 6431e92fc827 ("parisc:
io_pgetevents_time64() needs compat syscall in 32-bit compat mode"),
as well as by using more sophisticated system call wrappers on x86 and
s390. However, arm64, mips, powerpc, sparc and riscv still have the
same bug.

Change all of them over to use compat_sys_io_pgetevents_time64()
like parisc already does. This was clearly the intention when the
function was originally added, but it got hooked up incorrectly in
the tables.

Cc: stable@vger.kernel.org
Fixes: 48166e6ea47d ("y2038: add 64-bit time_t syscalls to all 32-bit architectures")
Acked-by: Heiko Carstens <hca@linux.ibm.com> # s390
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm64/include/asm/unistd32.h
arch/mips/kernel/syscalls/syscall_n32.tbl
arch/mips/kernel/syscalls/syscall_o32.tbl
arch/powerpc/kernel/syscalls/syscall.tbl
arch/s390/kernel/syscalls/syscall.tbl
arch/sparc/kernel/syscalls/syscall.tbl
arch/x86/entry/syscalls/syscall_32.tbl
include/uapi/asm-generic/unistd.h
kernel/sys_ni.c

index 78b68311ec8192c2afb6d10ba92ebf5556a34b54..545a4a7b5371ce99dfdea822e39e068747f6d66d 100644 (file)
@@ -840,7 +840,7 @@ __SYSCALL(__NR_pselect6_time64, compat_sys_pselect6_time64)
 #define __NR_ppoll_time64 414
 __SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)
 #define __NR_io_pgetevents_time64 416
-__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
+__SYSCALL(__NR_io_pgetevents_time64, compat_sys_io_pgetevents_time64)
 #define __NR_recvmmsg_time64 417
 __SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)
 #define __NR_mq_timedsend_time64 418
index 152034b8e0a0f3166a8b9e92e9edea56b80c0a32..4a296124604a15713193c2cf993db1881e89f390 100644 (file)
 412    n32     utimensat_time64                sys_utimensat
 413    n32     pselect6_time64                 compat_sys_pselect6_time64
 414    n32     ppoll_time64                    compat_sys_ppoll_time64
-416    n32     io_pgetevents_time64            sys_io_pgetevents
+416    n32     io_pgetevents_time64            compat_sys_io_pgetevents_time64
 417    n32     recvmmsg_time64                 compat_sys_recvmmsg_time64
 418    n32     mq_timedsend_time64             sys_mq_timedsend
 419    n32     mq_timedreceive_time64          sys_mq_timedreceive
index 1a646813afdca4b128443b8c364a018365f35cd7..37bbc8d9a94cc38598738f202e2b1d9bb12ad847 100644 (file)
 412    o32     utimensat_time64                sys_utimensat                   sys_utimensat
 413    o32     pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
 414    o32     ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
-416    o32     io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+416    o32     io_pgetevents_time64            sys_io_pgetevents               compat_sys_io_pgetevents_time64
 417    o32     recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
 418    o32     mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
 419    o32     mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
index b012579247ee881ffd9835f9b05d87fa6d0a8e57..40f6751271d3d8f65dbb5a43c8365726574d865e 100644 (file)
 412    32      utimensat_time64                sys_utimensat                   sys_utimensat
 413    32      pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
 414    32      ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
-416    32      io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+416    32      io_pgetevents_time64            sys_io_pgetevents               compat_sys_io_pgetevents_time64
 417    32      recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
 418    32      mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
 419    32      mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
index 0122cc156952cf55b630584a983702d12eddcc62..51cc3616d5f98a4bbe84fb8389e64b8a1d8d3ef2 100644 (file)
 412    32      utimensat_time64        -                               sys_utimensat
 413    32      pselect6_time64         -                               compat_sys_pselect6_time64
 414    32      ppoll_time64            -                               compat_sys_ppoll_time64
-416    32      io_pgetevents_time64    -                               sys_io_pgetevents
+416    32      io_pgetevents_time64    -                               compat_sys_io_pgetevents_time64
 417    32      recvmmsg_time64         -                               compat_sys_recvmmsg_time64
 418    32      mq_timedsend_time64     -                               sys_mq_timedsend
 419    32      mq_timedreceive_time64  -                               sys_mq_timedreceive
index be69b53cbdf0bc78e87229f0402a62bf969937e9..d0f535230ad8ba27cf91e085f9d678256de5ce14 100644 (file)
 412    32      utimensat_time64                sys_utimensat                   sys_utimensat
 413    32      pselect6_time64                 sys_pselect6                    compat_sys_pselect6_time64
 414    32      ppoll_time64                    sys_ppoll                       compat_sys_ppoll_time64
-416    32      io_pgetevents_time64            sys_io_pgetevents               sys_io_pgetevents
+416    32      io_pgetevents_time64            sys_io_pgetevents               compat_sys_io_pgetevents_time64
 417    32      recvmmsg_time64                 sys_recvmmsg                    compat_sys_recvmmsg_time64
 418    32      mq_timedsend_time64             sys_mq_timedsend                sys_mq_timedsend
 419    32      mq_timedreceive_time64          sys_mq_timedreceive             sys_mq_timedreceive
index 2d0b1bd866ead6738e40f8b21cf2808ef66ae857..38db5ef2329f3cacf5156ffe2e807e0c9ca297ec 100644 (file)
 412    i386    utimensat_time64        sys_utimensat
 413    i386    pselect6_time64         sys_pselect6                    compat_sys_pselect6_time64
 414    i386    ppoll_time64            sys_ppoll                       compat_sys_ppoll_time64
-416    i386    io_pgetevents_time64    sys_io_pgetevents
+416    i386    io_pgetevents_time64    sys_io_pgetevents               compat_sys_io_pgetevents_time64
 417    i386    recvmmsg_time64         sys_recvmmsg                    compat_sys_recvmmsg_time64
 418    i386    mq_timedsend_time64     sys_mq_timedsend
 419    i386    mq_timedreceive_time64  sys_mq_timedreceive
index abe087c53b4b04348431716c1cb638b99d5a788a..05c412c58239955b5b6a9f7faa7b78bcb28c1623 100644 (file)
@@ -737,7 +737,7 @@ __SC_COMP(__NR_pselect6_time64, sys_pselect6, compat_sys_pselect6_time64)
 #define __NR_ppoll_time64 414
 __SC_COMP(__NR_ppoll_time64, sys_ppoll, compat_sys_ppoll_time64)
 #define __NR_io_pgetevents_time64 416
-__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
+__SC_COMP(__NR_io_pgetevents_time64, sys_io_pgetevents, compat_sys_io_pgetevents_time64)
 #define __NR_recvmmsg_time64 417
 __SC_COMP(__NR_recvmmsg_time64, sys_recvmmsg, compat_sys_recvmmsg_time64)
 #define __NR_mq_timedsend_time64 418
index 11c55593a2e911c4ee7f6b36a6b3b7381f3f4c9f..e8e11778737704cdb213c4dce39ddb602cae4036 100644 (file)
@@ -46,8 +46,8 @@ COND_SYSCALL(io_getevents_time32);
 COND_SYSCALL(io_getevents);
 COND_SYSCALL(io_pgetevents_time32);
 COND_SYSCALL(io_pgetevents);
-COND_SYSCALL_COMPAT(io_pgetevents_time32);
 COND_SYSCALL_COMPAT(io_pgetevents);
+COND_SYSCALL_COMPAT(io_pgetevents_time64);
 COND_SYSCALL(io_uring_setup);
 COND_SYSCALL(io_uring_enter);
 COND_SYSCALL(io_uring_register);