On Sat, Aug 12, 2023 at 7:37 AM Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> wrote: > > diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig > index 976fd594b446..d56304276318 100644 > --- a/kernel/trace/Kconfig > +++ b/kernel/trace/Kconfig > @@ -57,6 +57,13 @@ config HAVE_DYNAMIC_FTRACE_WITH_ARGS > This allows for use of ftrace_regs_get_argument() and > ftrace_regs_get_stack_pointer(). > > +config HAVE_PT_REGS_TO_FTRACE_REGS_CAST > + bool > + help > + If this is set, the memory layout of the ftrace_regs data structure > + is the same as the pt_regs. So the pt_regs is possible to be casted > + to ftrace_regs. What would you think of introducing a: #ifdef HAVE_PT_REGS_TO_FTRACE_REGS_CAST static_assert(sizeof(struct pt_regs) == sizeof(struct ftrace_regs); #endif // HAVE_PT_REGS_TO_FTRACE_REGS_CAST somewhere in ftrace.h just as a small extra safety net ? It doesn't exactly guarantee all we want but it should give an early warning of mistakes.