linux/arch/x86/entry
H. Peter Anvin (Intel) b337b4965e x86/entry: Treat out of range and gap system calls the same
The current 64-bit system call entry code treats out-of-range system
calls differently than system calls that map to a hole in the system
call table.

This is visible to the user if system calls are intercepted via ptrace or
seccomp and the return value (regs->ax) is modified: in the former case,
the return value is preserved, and in the latter case, sys_ni_syscall() is
called and the return value is forced to -ENOSYS.

The API spec in <asm-generic/syscalls.h> is very clear that only
(int)-1 is the non-system-call sentinel value, so make the system call
behavior consistent by calling sys_ni_syscall() for all invalid system
call numbers except for -1.

Although currently sys_ni_syscall() simply returns -ENOSYS, calling it
explicitly is friendly for tracing and future possible extensions, and
as this is an error path there is no reason to optimize it.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20210518191303.4135296-6-hpa@zytor.com
2021-05-20 15:19:49 +02:00
..
syscalls x86/syscalls: Switch to generic syscallhdr.sh 2021-05-20 15:03:59 +02:00
vdso A single fix for the x86 VDSO build infrastructure to address a compiler 2021-04-26 10:17:34 -07:00
vsyscall x86/mm: Convert mmu context ia32_compat into a proper flags field 2020-10-26 13:46:47 +01:00
calling.h x86/entry: Split PUSH_AND_CLEAR_REGS into two submacros 2021-05-12 10:49:15 +02:00
common.c x86/entry: Treat out of range and gap system calls the same 2021-05-20 15:19:49 +02:00
entry_32.S - turn the stack canary into a normal __percpu variable on 32-bit which 2021-04-27 17:45:09 -07:00
entry_64_compat.S x86/sev-es: Introduce ip_within_syscall_gap() helper 2021-03-08 14:22:17 +01:00
entry_64.S x86/entry/64: Sign-extend system calls on entry to int 2021-05-20 15:19:49 +02:00
Makefile x86/entry: Actually disable stack protector 2020-07-19 13:07:10 +02:00
syscall_32.c x86/syscalls: Stop filling syscall arrays with *_sys_ni_syscall 2021-05-20 15:03:59 +02:00
syscall_64.c x86/syscalls: Stop filling syscall arrays with *_sys_ni_syscall 2021-05-20 15:03:59 +02:00
syscall_x32.c x86/syscalls: Stop filling syscall arrays with *_sys_ni_syscall 2021-05-20 15:03:59 +02:00
thunk_32.S x86/entry: Remove unused THUNKs 2020-08-26 12:41:54 +02:00
thunk_64.S x86/entry: Remove put_ret_addr_in_rdi THUNK macro argument 2021-01-19 11:06:14 +01:00