]> www.infradead.org Git - users/jedix/linux-maple.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)
committerArnd Bergmann <arnd@arndb.de>
Tue, 25 Jun 2024 13:57:20 +0000 (15:57 +0200)
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>
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 266b96acc01439030643d87df1ae1e7cbd1fa4b4..1386e8e751f2472ecf5ad580834354a401f700c6 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 cc869f5d5693185c09bb10cb8a7db805f7122d8b..953f5b7dc723f60254ed7e5b256d3b611ae7dd13 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 81428a2eb660484ca938f13a4e35cf4d77b1ec89..2439a2491cffe30692cb721b98e0c059ec656297 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 3656f1ca7a21c6590267499335d6a911e678e27e..c6b0546b284d96d11d1b3f19d6e8537f67ed9c00 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 bd0fee24ad10a3d13ef6734512e52b9048d98692..01071182763e96ff03b5d74e4b9c4387ab84c456 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 ac6c281ccfe02950b93072ee3a4971d9108e38f9..b354139b40be52431935eb6aed2e673c87ddec53 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 7fd1f57ad3d30cfffb47b4123caf896e8de8281e..d6ebcab1d8b28b04e27f3515500888c5d46bf437 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 d983c48a3b6af1753108a43ad95eb839e95e5e6b..d4cc26932ff47b504c65665671beb3c2e1233304 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 d7eee421d4bc3383b281f8fd510c021de329b13a..b696b85ac63e0bf1fa0568e6cbe574ab8de3dd80 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);