linux/tools/testing/selftests/x86
Xin Li (Intel) cdc1749775 selftests/x86: Add a test to detect infinite SIGTRAP handler loop
commit f287822688 upstream.

When FRED is enabled, if the Trap Flag (TF) is set without an external
debugger attached, it can lead to an infinite loop in the SIGTRAP
handler.  To avoid this, the software event flag in the augmented SS
must be cleared, ensuring that no single-step trap remains pending when
ERETU completes.

This test checks for that specific scenario—verifying whether the kernel
correctly prevents an infinite SIGTRAP loop in this edge case when FRED
is enabled.

The test should _always_ pass with IDT event delivery, thus no need to
disable the test even when FRED is not enabled.

Signed-off-by: Xin Li (Intel) <xin@zytor.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Tested-by: Sohil Mehta <sohil.mehta@intel.com>
Cc:stable@vger.kernel.org
Link: https://lore.kernel.org/all/20250609084054.2083189-3-xin%40zytor.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-06-27 11:07:37 +01:00
..
.gitignore selftests/x86/pkeys: move selftests to arch-neutral directory 2020-06-04 19:06:26 -07:00
amx.c selftests/x86/amx: Add a ptrace test 2023-03-30 12:49:21 +02:00
check_cc.sh selftests/x86: Add validity check and allow field splitting 2022-02-17 11:55:17 -08:00
check_initial_reg_state.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
corrupt_xstate_header.c selftests/x86/corrupt_xstate_header: Use provided __cpuid_count() macro 2022-04-25 15:13:03 -06:00
entry_from_vm86.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 257 2019-06-05 17:30:27 +02:00
fsgsbase.c selftests/x86/fsgsbase: Fix GS == 1, 2, and 3 tests 2020-11-24 13:46:16 +01:00
fsgsbase_restore.c x86/ptrace: Fix 32-bit PTRACE_SETREGS vs fsbase and gsbase 2020-07-01 15:27:20 +02:00
helpers.h selftests/x86: Use __builtin_ia32_read/writeeflags 2021-01-12 12:31:28 +01:00
ioperm.c selftests/x86/ioperm: Extend testing so the shared bitmap is exercised 2019-11-16 11:24:04 +01:00
iopl.c selftests/x86/iopl: Adjust to the faked iopl CLI/STI usage 2021-10-30 23:18:04 +02:00
ldt_gdt.c selftests/x86/ldt_gdt: remove unneeded semicolon 2021-02-08 16:32:52 -07:00
Makefile selftests/x86: Add a test to detect infinite SIGTRAP handler loop 2025-06-27 11:07:37 +01:00
mov_ss_trap.c selftests/x86: Fix error: variably modified 'altstack_data' at file scope 2021-08-25 16:54:39 -06:00
ptrace_syscall.c selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault 2020-03-20 11:28:47 +01:00
raw_syscall_helper_32.S selftests/x86: Add missing .note.GNU-stack sections 2020-11-24 13:55:39 +01:00
sigaltstack.c selftest/x86/signal: Include test cases for validating sigaltstack 2021-05-19 12:45:07 +02:00
sigreturn.c selftests/x86: Fix error: variably modified 'altstack_data' at file scope 2021-08-25 16:54:39 -06:00
sigtrap_loop.c selftests/x86: Add a test to detect infinite SIGTRAP handler loop 2025-06-27 11:07:37 +01:00
single_step_syscall.c selftests/x86: Fix error: variably modified 'altstack_data' at file scope 2021-08-25 16:54:39 -06:00
syscall_arg_fault.c selftests/x86: Fix error: variably modified 'altstack_data' at file scope 2021-08-25 16:54:39 -06:00
syscall_nt.c x86/entry, selftests: Further improve user entry sanity checks 2020-07-04 19:47:25 +02:00
syscall_numbering.c selftests/x86/syscall: Add tests under ptrace to syscall_numbering_64 2021-05-20 15:19:48 +02:00
sysret_rip.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
sysret_ss_attrs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
test_FCMOV.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_FCOMI.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_FISTTP.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
test_mremap_vdso.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
test_syscall_vdso.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
test_vsyscall.c selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv() 2021-10-25 09:27:20 -06:00
thunks.S selftests/x86: Add missing .note.GNU-stack sections 2020-11-24 13:55:39 +01:00
thunks_32.S selftests/x86: Add a missing .note.GNU-stack section to thunks_32.S 2021-03-18 11:05:14 +01:00
trivial_32bit_program.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 257 2019-06-05 17:30:27 +02:00
trivial_64bit_program.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 257 2019-06-05 17:30:27 +02:00
trivial_program.c selftests/x86: Detect -no-pie availability 2018-05-30 15:21:51 -06:00
unwind_vdso.c selftests/x86: Consolidate and fix get/set_eflags() helpers 2020-07-01 10:00:27 +02:00
vdso_restorer.c selftests/x86/vdso: Fix no-vDSO segfaults 2020-03-20 11:20:04 +01:00