Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

hexagon: fix fadvise64_64 calling conventions

fadvise64_64() has two 64-bit arguments at the wrong alignment
for hexagon, which turns them into a 7-argument syscall that is
not supported by Linux.

The downstream musl port for hexagon actually asks for a 6-argument
version the same way we do it on arm, csky, powerpc, so make the
kernel do it the same way to avoid having to change both.

Link: https://github.com/quic/musl/blob/hexagon/arch/hexagon/syscall_arch.h#L78
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+13
+6
arch/hexagon/include/asm/syscalls.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + 3 + #include <asm-generic/syscalls.h> 4 + 5 + asmlinkage long sys_hexagon_fadvise64_64(int fd, int advice, 6 + u32 a2, u32 a3, u32 a4, u32 a5);
+7
arch/hexagon/kernel/syscalltab.c
··· 14 14 #undef __SYSCALL 15 15 #define __SYSCALL(nr, call) [nr] = (call), 16 16 17 + SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice, 18 + SC_ARG64(offset), SC_ARG64(len)) 19 + { 20 + return ksys_fadvise64_64(fd, SC_VAL64(loff_t, offset), SC_VAL64(loff_t, len), advice); 21 + } 22 + #define sys_fadvise64_64 sys_hexagon_fadvise64_64 23 + 17 24 void *sys_call_table[__NR_syscalls] = { 18 25 #include <asm/unistd.h> 19 26 };