On Mon, Mar 03, 2025 at 09:28:37PM +0800, Menglong Dong wrote: > The per-function metadata storage is already used by ftrace if > CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS is enabled, and it store the pointer > of the callback directly to the function padding, which consume 8-bytes, > in the commit > baaf553d3bc3 ("arm64: Implement HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS"). > So we can directly store the index to the function padding too, without > a prepending. With CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS enabled, the > function is 8-bytes aligned, and we will compile the kernel with extra > 8-bytes (2 NOPS) padding space. Otherwise, the function is 4-bytes > aligned, and only extra 4-bytes (1 NOPS) is needed. > > However, we have the same problem with Mark in the commit above: we can't > use the function padding together with CFI_CLANG, which can make the clang > compiles a wrong offset to the pre-function type hash. He said that he was > working with others on this problem 2 years ago. Hi Mark, is there any > progress on this problem? I don't think there's been much progress since the previous discussion a couple of years ago. The conclusion seemed to be that adding a section parameter to -fpatchable-function-entry would allow us to identify notrace functions while keeping a consistent layout for functions: https://lore.kernel.org/lkml/Y1QEzk%2FA41PKLEPe@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ Sami