linux/arch/parisc/kernel
Arnd Bergmann 3ae15c0238 parisc: use generic sys_fanotify_mark implementation
[ Upstream commit 403f17a330 ]

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>
History 2024-07-05 09:31:51 +02:00
..
syscalls parisc: use generic sys_fanotify_mark implementation 2024-07-05 09:31:51 +02:00
vdso32 parisc: Add missing FORCE prerequisites in Makefile 2023-01-07 11:11:56 +01:00
vdso64 parisc: Add missing FORCE prerequisites in Makefile 2023-01-07 11:11:56 +01:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
alternative.c parisc: Use num_present_cpus() in alternative patching code 2023-05-30 14:03:18 +01:00
asm-offsets.c parisc: Fix vDSO signal breakage on 32-bit kernel 2022-07-02 18:36:58 +02:00
audit.c audit: add support for the openat2 syscall 2021-10-01 16:52:48 -04:00
cache.c parisc: Fix flush_dcache_page() for usage from irq context 2023-05-30 14:03:18 +01:00
compat_audit.c audit: add support for the openat2 syscall 2021-10-01 16:52:48 -04:00
drivers.c parisc: Prevent hung tasks when printing inventory on serial console 2024-02-23 09:12:33 +01:00
entry.S parisc/pgtable: Do not drop upper 5 address bits of physical address 2023-11-28 17:07:14 +00:00
firmware.c parisc/firmware: Fix F-extend for PDC addresses 2024-01-31 16:16:59 -08:00
ftrace.c parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check 2024-03-26 18:20:25 -04:00
hardware.c parisc: Clean up names in hardware database 2022-08-01 18:43:23 +02:00
head.S parisc: Prevent booting 64-bit kernels on PA1.x machines 2023-11-28 17:07:14 +00:00
hpmc.S parisc: Re-use toc_stack as hpmc_stack 2022-01-11 11:57:37 +01:00
inventory.c parisc: Add qemu fw_cfg interface 2020-10-15 08:10:37 +02:00
irq.c parisc: irq: Make irq_stack_union static to avoid sparse warning 2023-10-06 14:56:51 +02:00
jump_label.c jump_label: make initial NOP patching the special case 2022-06-24 09:48:55 +02:00
kexec.c parisc: add support for kexec_file_load() syscall 2019-09-08 15:41:46 +02:00
kexec_file.c parisc: add support for kexec_file_load() syscall 2019-09-08 15:41:46 +02:00
kgdb.c parisc: Drop duplicate kgdb_pdc console 2023-01-07 11:11:56 +01:00
kprobes.c parisc: Fix typos in comments 2022-05-08 20:01:12 +02:00
Makefile kbuild: use obj-y instead extra-y for objects placed at the head 2022-10-02 18:04:05 +09:00
module.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
pa7300lc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pacache.S parisc: Ensure page alignment in flush functions 2023-05-11 23:03:38 +09:00
parisc_ksyms.c parisc: add missing export of __cmpxchg_u8() 2024-06-12 11:03:04 +02:00
patch.c parisc: Fix patch code locking and flushing 2022-05-17 21:52:59 +02:00
pci-dma.c parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() 2023-06-21 16:00:53 +02:00
pci.c parisc: Drop comments which are already in pci.h 2019-09-05 16:41:11 +02:00
pdc_chassis.c kernel.h: split out panic and oops helpers 2021-07-01 11:06:04 -07:00
pdc_cons.c parisc: Drop locking in pdc console code 2023-01-07 11:11:56 +01:00
pdt.c parisc: Make use of the helper macro kthread_run() 2021-11-01 07:36:01 +01:00
perf.c parisc/perf: open access for CAP_PERFMON privileged process 2020-04-16 12:19:08 -03:00
perf_asm.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
perf_images.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
process.c parisc: Allow to reboot machine after system halt 2023-05-30 14:03:18 +01:00
processor.c Revert "parisc: Only list existing CPUs in cpu_possible_mask" 2024-03-01 13:26:31 +01:00
ptrace.c parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case 2023-02-09 11:28:20 +01:00
real2.S parisc: Fix argument pointer in real64_call_asm() 2023-05-11 23:03:38 +09:00
relocate_kernel.S parisc: add kexec syscall support 2019-09-08 15:37:04 +02:00
setup.c parisc: Convert PDC console to an early console 2022-10-11 12:01:24 +02:00
signal.c ptrace: Cleanups for v5.18 2022-03-28 17:29:53 -07:00
signal32.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
signal32.h parisc: Add vDSO support 2022-03-11 19:49:30 +01:00
smp.c parisc: Fix crash with nr_cpus=1 option 2023-10-10 22:00:44 +02:00
stacktrace.c parisc: Fix implicit declaration of function '__kernel_text_address' 2021-11-13 22:10:56 +01:00
sys_parisc.c parisc: sys_parisc: parisc_personality() is called from asm code 2023-09-02 09:16:19 +02:00
sys_parisc32.c parisc: use generic sys_fanotify_mark implementation 2024-07-05 09:31:51 +02:00
syscall.S parisc: Add lws_atomic_xchg and lws_atomic_store syscalls 2022-01-07 01:29:21 +01:00
time.c parisc: Mark cr16 clock unstable on all SMP machines 2022-05-08 20:01:12 +02:00
toc.c parisc: Fix missing prototype for 'toc_intr' warning in toc.c 2022-01-20 20:39:19 +01:00
toc_asm.S parisc: Enable TOC (transfer of contents) feature unconditionally 2022-01-11 11:57:37 +01:00
topology.c parisc: fix a crash with multicore scheduler 2022-06-03 09:54:01 +02:00
traps.c parisc: Handle kprobes breakpoints only in kernel context 2023-05-30 14:03:18 +01:00
unaligned.c parisc/unaligned: Rewrite 64-bit inline assembly of emulate_ldd() 2024-04-03 15:19:27 +02:00
unwind.c parisc: Move thread_info into task struct 2021-11-01 07:35:59 +01:00
vdso.c treewide: use prandom_u32_max() when possible, part 1 2022-10-11 17:42:55 -06:00
vmlinux.lds.S parisc: Ensure 32-bit alignment on parisc unwind section 2023-12-08 08:51:16 +01:00