linux/tools/objtool
Josh Poimboeuf 1b7685256d objtool: Fix INSN_CONTEXT_SWITCH handling in validate_unret()
[ Upstream commit a8df7d0ef9 ]

The !CONFIG_IA32_EMULATION version of xen_entry_SYSCALL_compat() ends
with a SYSCALL instruction which is classified by objtool as
INSN_CONTEXT_SWITCH.

Unlike validate_branch(), validate_unret() doesn't consider
INSN_CONTEXT_SWITCH in a non-function to be a dead end, so it keeps
going past the end of xen_entry_SYSCALL_compat(), resulting in the
following warning:

  vmlinux.o: warning: objtool: xen_reschedule_interrupt+0x2a: RET before UNTRAIN

Fix that by adding INSN_CONTEXT_SWITCH handling to validate_unret() to
match what validate_branch() is already doing.

Fixes: a09a6e2399 ("objtool: Add entry UNRET validation")
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/f5eda46fd09f15b1f5cde3d9ae3b92b958342add.1744095216.git.jpoimboe@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-04-20 10:15:06 +02:00
..
arch objtool: Handle frame pointer related instructions 2024-09-17 22:23:09 +08:00
Documentation x86/alternatives, kvm: Fix a couple of CALLs without a frame pointer 2024-07-01 12:41:11 +02:00
include/objtool objtool: Fix C jump table annotations for Clang 2025-03-07 18:25:36 +01:00
.gitignore objtool: Install libsubcmd in build 2023-01-30 16:27:46 -08:00
Build objtool: Install libsubcmd in build 2023-01-30 16:27:46 -08:00
builtin-check.c objtool: Use "action" in error message to be consistent with help 2024-07-02 23:40:24 -07:00
check.c objtool: Fix INSN_CONTEXT_SWITCH handling in validate_unret() 2025-04-20 10:15:06 +02:00
elf.c objtool: Remove max symbol name length limitation 2023-10-05 17:01:28 -07:00
Makefile objtool/LoongArch: Enable orc to be built 2024-03-11 22:23:47 +08:00
noreturns.h objtool: Add bch2_trans_unlocked_error() to bcachefs noreturns 2025-01-02 10:34:21 +01:00
objtool.c objtool: Propagate early errors 2023-10-05 17:01:11 -07:00
orc_dump.c objtool/x86: Separate arch-specific and generic parts 2024-03-11 22:23:47 +08:00
orc_gen.c objtool/x86: Separate arch-specific and generic parts 2024-03-11 22:23:47 +08:00
special.c x86/alternatives: Add nested alternatives macros 2024-06-11 17:13:08 +02:00
sync-check.sh objtool: Add objtool_types.h 2023-03-23 23:18:56 +01:00
weak.c objtool: Ditch subcommands 2022-04-22 12:32:01 +02:00