On Tue, Mar 4, 2025 at 5:40 AM Sami Tolvanen <samitolvanen@xxxxxxxxxx> wrote: > > 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/ Thank you for your information, which helps me a lot. I'll dig deeper to find a way to keep CFI working together with this function. Thanks! Menglong Dong > > Sami