[tip: x86/sev] objtool: Ignore __pi___cfi_ prefixed symbols

tip-bot2 for Nathan Chancellor posted 1 patch 11 hours ago
tools/objtool/check.c | 1 +
1 file changed, 1 insertion(+)
[tip: x86/sev] objtool: Ignore __pi___cfi_ prefixed symbols
Posted by tip-bot2 for Nathan Chancellor 11 hours ago
The following commit has been merged into the x86/sev branch of tip:

Commit-ID:     26a9f90b6101ea2c9d6f02802cf6d85108104b90
Gitweb:        https://git.kernel.org/tip/26a9f90b6101ea2c9d6f02802cf6d85108104b90
Author:        Nathan Chancellor <nathan@kernel.org>
AuthorDate:    Mon, 08 Sep 2025 13:04:18 -07:00
Committer:     Borislav Petkov (AMD) <bp@alien8.de>
CommitterDate: Tue, 09 Sep 2025 12:02:01 +02:00

objtool: Ignore __pi___cfi_ prefixed symbols

When building with CONFIG_CFI_CLANG=y after the recent series to
separate the x86 startup code, there are objtool warnings along the
lines of:

  vmlinux.o: warning: objtool: __pi___cfi_startup_64_load_idt() falls through to next function __pi_startup_64_load_idt()
  vmlinux.o: warning: objtool: __pi___cfi_startup_64_setup_gdt_idt() falls through to next function __pi_startup_64_setup_gdt_idt()
  vmlinux.o: warning: objtool: __pi___cfi___startup_64() falls through to next function __pi___startup_64()

As the comment in validate_branch() states, this is expected, so ignore
these symbols in the same way that __cfi_ and __pfx_ symbols are already
ignored for the rest of the kernel.

Fixes: 7b38dec3c5af ("x86/boot: Create a confined code area for startup code")
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
---
 tools/objtool/check.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index d0d2066..093fcd0 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -3565,6 +3565,7 @@ static int validate_branch(struct objtool_file *file, struct symbol *func,
 			/* Ignore KCFI type preambles, which always fall through */
 			if (!strncmp(func->name, "__cfi_", 6) ||
 			    !strncmp(func->name, "__pfx_", 6) ||
+			    !strncmp(func->name, "__pi___cfi_", 11) ||
 			    !strncmp(func->name, "__pi___pfx_", 11))
 				return 0;