linux/arch/parisc
Arnd Bergmann 403f17a330 parisc: use generic sys_fanotify_mark implementation
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@linaro.org>
Tested-by: Helge Deller <deller@gmx.de>
Acked-by: Helge Deller <deller@gmx.de>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
I found this through code inspection, please double-check to make
sure I got the bug and the fix right.

The alternative is to fix this by reverting glibc back to the
unusual behavior.
2024-06-25 15:57:25 +02:00
..
boot Makefile: remove redundant tool coverage variables 2024-05-14 23:35:48 +09:00
configs drm/display: Make DisplayPort CEC-over-AUX Kconfig name consistent 2024-03-28 11:26:47 +01:00
include parisc: Try to fix random segmentation faults in package builds 2024-06-12 01:57:05 +02:00
kernel parisc: use generic sys_fanotify_mark implementation 2024-06-25 15:57:25 +02:00
lib parisc: add u16 support to cmpxchg() 2024-04-09 22:06:00 -07:00
math-emu parisc/math-emu: Remove unused struct 'exc_reg' 2024-05-10 15:09:15 +02:00
mm The usual shower of singleton fixes and minor series all over MM, 2024-05-19 09:21:03 -07:00
net bpf: Take return from set_memory_rox() into account with bpf_jit_binary_lock_ro() 2024-03-14 19:28:52 -07:00
video arch: Rename fbdev header and source files 2024-05-03 17:07:50 +02:00
defpalo.conf
install.sh kbuild: factor out the common installation code into scripts/install.sh 2022-05-11 21:45:53 +09:00
Kbuild parisc: Wire up eBPF JIT compiler 2023-08-22 10:24:47 +02:00
Kconfig parisc: use generic sys_fanotify_mark implementation 2024-06-25 15:57:25 +02:00
Kconfig.debug parisc: Use page table locks only if DEBUG_KERNEL is enabled 2023-08-20 20:23:46 +02:00
Makefile arch: Select fbdev helpers with CONFIG_VIDEO 2024-05-03 17:07:50 +02:00