[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <b31072d5-865b-4cda-be37-d93c36397d39@app.fastmail.com>
Date: Mon, 24 Jun 2024 14:52:47 +0200
From: "Arnd Bergmann" <arnd@...db.de>
To: "Arnd Bergmann" <arnd@...nel.org>,
Linux-Arch <linux-arch@...r.kernel.org>, linux-kernel@...r.kernel.org
Cc: "Thomas Bogendoerfer" <tsbogend@...ha.franken.de>,
linux-mips@...r.kernel.org, "Helge Deller" <deller@....de>,
linux-parisc@...r.kernel.org, "David S . Miller" <davem@...emloft.net>,
"Andreas Larsson" <andreas@...sler.com>, sparclinux@...r.kernel.org,
"Michael Ellerman" <mpe@...erman.id.au>,
"Nicholas Piggin" <npiggin@...il.com>,
"Christophe Leroy" <christophe.leroy@...roup.eu>,
"Naveen N. Rao" <naveen.n.rao@...ux.ibm.com>,
linuxppc-dev@...ts.ozlabs.org, "Brian Cain" <bcain@...cinc.com>,
linux-hexagon@...r.kernel.org, guoren <guoren@...nel.org>,
"linux-csky@...r.kernel.org" <linux-csky@...r.kernel.org>,
"Heiko Carstens" <hca@...ux.ibm.com>, linux-s390@...r.kernel.org,
"Rich Felker" <dalias@...c.org>,
"John Paul Adrian Glaubitz" <glaubitz@...sik.fu-berlin.de>,
linux-sh@...r.kernel.org, "H. Peter Anvin" <hpa@...or.com>,
"Alexander Viro" <viro@...iv.linux.org.uk>,
"Christian Brauner" <brauner@...nel.org>, linux-fsdevel@...r.kernel.org,
"Xi Ruoyao" <libc-alpha@...rceware.org>,
"musl@...ts.openwall.com" <musl@...ts.openwall.com>,
"LTP List" <ltp@...ts.linux.it>, stable@...r.kernel.org
Subject: Re: [PATCH 02/15] syscalls: fix compat_sys_io_pgetevents_time64 usage
On Thu, Jun 20, 2024, at 18:23, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@...db.de>
>
> 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.
>
> Changes 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@...r.kernel.org
> Fixes: 48166e6ea47d ("y2038: add 64-bit time_t syscalls to all 32-bit
> architectures")
> Signed-off-by: Arnd Bergmann <arnd@...db.de>
> ---
> arch/arm64/include/asm/unistd32.h | 2 +-
> arch/mips/kernel/syscalls/syscall_n32.tbl | 2 +-
> arch/mips/kernel/syscalls/syscall_o32.tbl | 2 +-
> arch/powerpc/kernel/syscalls/syscall.tbl | 2 +-
> arch/s390/kernel/syscalls/syscall.tbl | 2 +-
> arch/sparc/kernel/syscalls/syscall.tbl | 2 +-
> arch/x86/entry/syscalls/syscall_32.tbl | 2 +-
> include/uapi/asm-generic/unistd.h | 2 +-
> 8 files changed, 8 insertions(+), 8 deletions(-)
The build bot reported a randconfig regressions with this
patch, which I've now fixed up like this:
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index d7eee421d4bc..b696b85ac63e 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -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);
This was already broken on parisc the same way, but the
mistake in sys_ni.c turned into a link failure for every
compat architecture after my patch.
Arnd
Powered by blists - more mailing lists