[PATCH RFC 3/8] compiler_types: Let notrace keep the function prefix NOPs
From: Jose Fernandez (Anthropic)
Date: Thu Sep 03 2026 - 21:19:42 EST
Let notrace keep the prefix NOPs when the architecture defines
CC_USING_PATCHABLE_FUNCTION_PREFIX. kCFI callers check the type hash
at a fixed offset before the entry point, so a notrace function needs
the same prefix NOPs as any other. Record the entry in a section the
linker drops, so ftrace never sees it. Clang 21 takes a section name
as a third argument of the attribute. Nothing defines the macro yet,
so no functional change.
Reviewed-by: Ben Cressey <ben@xxxxxxxxxxx>
Reviewed-by: Florent Revest (Anthropic) <florent.revest@xxxxxxxxx>
Assisted-by: LLM
Signed-off-by: Jose Fernandez (Anthropic) <jose.fernandez@xxxxxxxxx>
---
include/linux/compiler_types.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
index c5921f1390079..87e10920acba7 100644
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -211,6 +211,12 @@ struct ftrace_likely_data {
#if defined(CC_USING_HOTPATCH)
#define notrace __attribute__((hotpatch(0, 0)))
+#elif defined(CC_USING_PATCHABLE_FUNCTION_PREFIX) && !defined(__BINDGEN__)
+/* bindgen generates no code and its libclang may not take the section argument. */
+#define notrace \
+ __attribute__((patchable_function_entry(CC_USING_PATCHABLE_FUNCTION_PREFIX, \
+ CC_USING_PATCHABLE_FUNCTION_PREFIX, \
+ ".discard.patchable_function_entries")))
#elif defined(CC_USING_PATCHABLE_FUNCTION_ENTRY)
#define notrace __attribute__((patchable_function_entry(0, 0)))
#else
--
2.52.0