|
Message-ID: <a913c77e-1abb-409f-86b9-8805c1451988@roeck-us.net> Date: Sat, 29 Jun 2024 10:46:33 -0700 From: Guenter Roeck <linux@...ck-us.net> To: Arnd Bergmann <arnd@...nel.org> Cc: linux-arch@...r.kernel.org, linux-kernel@...r.kernel.org, Arnd Bergmann <arnd@...db.de>, 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, Guo Ren <guoren@...nel.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, libc-alpha@...rceware.org, musl@...ts.openwall.com, Adhemerval Zanella <adhemerval.zanella@...aro.org> Subject: Re: [PATCH v2 06/13] parisc: use generic sys_fanotify_mark implementation On Mon, Jun 24, 2024 at 06:37:04PM +0200, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@...db.de> > > The sys_fanotify_mark() syscall on parisc uses the reverse word order > for the two halves of the 64-bit argument compared to all syscalls on > all 32-bit architectures. As far as I can tell, the problem is that > the function arguments on parisc are sorted backwards (26, 25, 24, 23, > ...) compared to everyone else, so the calling conventions of using an > even/odd register pair in native word order result in the lower word > coming first in function arguments, matching the expected behavior > on little-endian architectures. The system call conventions however > ended up matching what the other 32-bit architectures do. > > A glibc cleanup in 2020 changed the userspace behavior in a way that > handles all architectures consistently, but this inadvertently broke > parisc32 by changing to the same method as everyone else. > > The change made it into glibc-2.35 and subsequently into debian 12 > (bookworm), which is the latest stable release. This means we > need to choose between reverting the glibc change or changing the > kernel to match it again, but either hange will leave some systems > broken. > > Pick the option that is more likely to help current and future > users and change the kernel to match current glibc. This also > means the behavior is now consistent across architectures, but > it breaks running new kernels with old glibc builds before 2.35. > > Link: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=d150181d73d9 > Link: https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/arch/parisc/kernel/sys_parisc.c?h=57b1dfbd5b4a39d > Cc: Adhemerval Zanella <adhemerval.zanella@...aro.org> > Tested-by: Helge Deller <deller@....de> > Acked-by: Helge Deller <deller@....de> > Signed-off-by: Arnd Bergmann <arnd@...db.de> > --- > I found this through code inspection, please double-check to make > sure I got the bug and the fix right. > Building parisc:allmodconfig ... failed -------------- Error log: In file included from fs/notify/fanotify/fanotify_user.c:14: include/linux/syscalls.h:248:25: error: conflicting types for 'sys_fanotify_mark'; have 'long int(int, unsigned int, u32, u32, int, const char *)' {aka 'long int(int, unsigned int, unsigned int, unsigned int, int, const char *)'} 248 | asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ | ^~~ include/linux/syscalls.h:234:9: note: in expansion of macro '__SYSCALL_DEFINEx' 234 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) | ^~~~~~~~~~~~~~~~~ include/linux/syscalls.h:228:36: note: in expansion of macro 'SYSCALL_DEFINEx' 228 | #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) | ^~~~~~~~~~~~~~~ include/linux/syscalls.h:287:27: note: in expansion of macro 'SYSCALL_DEFINE6' 287 | #define SYSCALL32_DEFINE6 SYSCALL_DEFINE6 | ^~~~~~~~~~~~~~~ fs/notify/fanotify/fanotify_user.c:1924:1: note: in expansion of macro 'SYSCALL32_DEFINE6' 1924 | SYSCALL32_DEFINE6(fanotify_mark, | ^~~~~~~~~~~~~~~~~ include/linux/syscalls.h:862:17: note: previous declaration of 'sys_fanotify_mark' with type 'long int(int, unsigned int, u64, int, const char *)' {aka 'long int(int, unsigned int, long long unsigned int, int, const char *)'} 862 | asmlinkage long sys_fanotify_mark(int fanotify_fd, unsigned int flags, | ^~~~~~~~~~~~~~~~~ make[6]: [scripts/Makefile.build:244: fs/notify/fanotify/fanotify_user.o] Error 1 (ignored) Guenter
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.