linux/arch/x86/entry
Thomas Gleixner e09d243a51 x86/entry: Do not allow external 0x80 interrupts
[ upstream commit 55617fb991 ]

The INT 0x80 instruction is used for 32-bit x86 Linux syscalls. The
kernel expects to receive a software interrupt as a result of the INT
0x80 instruction. However, an external interrupt on the same vector
also triggers the same codepath.

An external interrupt on vector 0x80 will currently be interpreted as a
32-bit system call, and assuming that it was a user context.

Panic on external interrupts on the vector.

To distinguish software interrupts from external ones, the kernel checks
the APIC ISR bit relevant to the 0x80 vector. For software interrupts,
this bit will be 0.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Borislav Petkov (AMD) <bp@alien8.de>
Cc: <stable@vger.kernel.org> # v6.0+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-12-13 18:39:05 +01:00
..
syscalls Kbuild updates for v5.18 2022-03-31 11:59:03 -07:00
vdso x86/mm: Fix VDSO and VVAR placement on 5-level paging machines 2023-08-16 18:27:25 +02:00
vsyscall x86/vsyscall_emu/64: Don't use RET in vsyscall emulation 2022-06-27 10:33:58 +02:00
calling.h x86/retbleed: Add fine grained Kconfig knobs 2022-06-29 17:43:41 +02:00
common.c x86/entry: Do not allow external 0x80 interrupts 2023-12-13 18:39:05 +01:00
entry.S x86/bugs: Add retbleed=ibpb 2022-06-27 10:34:00 +02:00
entry_32.S x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n 2022-06-27 10:34:00 +02:00
entry_64.S x86/entry: Remove UNTRAIN_RET from native_irq_return_ldt 2022-07-14 09:45:12 +02:00
entry_64_compat.S x86/entry: Convert INT 0x80 emulation to IDTENTRY 2023-12-13 18:39:05 +01:00
Makefile x86/entry: Build thunk_$(BITS) only if CONFIG_PREEMPTION=y 2022-08-04 12:23:50 +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: Build thunk_$(BITS) only if CONFIG_PREEMPTION=y 2022-08-04 12:23:50 +02:00
thunk_64.S x86/entry: Build thunk_$(BITS) only if CONFIG_PREEMPTION=y 2022-08-04 12:23:50 +02:00