* Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote: > Add a new objtool ignore macro, STACK_FRAME_NON_STANDARD, which can be > used to tell objtool to skip validation of a function. > > Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > --- > MAINTAINERS | 1 + > arch/x86/kernel/vmlinux.lds.S | 5 ++++- > include/linux/objtool.h | 22 ++++++++++++++++++++++ > 3 files changed, 27 insertions(+), 1 deletion(-) > create mode 100644 include/linux/objtool.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 7c7cebd..43a940e 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -7782,6 +7782,7 @@ OBJTOOL > M: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > S: Supported > F: tools/objtool/ > +F: include/linux/objtool.h > > OMAP SUPPORT > M: Tony Lindgren <tony@xxxxxxxxxxx> > diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S > index 92dc211..6038fe0 100644 > --- a/arch/x86/kernel/vmlinux.lds.S > +++ b/arch/x86/kernel/vmlinux.lds.S > @@ -343,7 +343,10 @@ SECTIONS > > /* Sections to be discarded */ > DISCARDS > - /DISCARD/ : { *(.eh_frame) } > + /DISCARD/ : { > + *(.eh_frame) > + *(__objtool_ignore_*) > + } > } > > > diff --git a/include/linux/objtool.h b/include/linux/objtool.h > new file mode 100644 > index 0000000..cce9d67 > --- /dev/null > +++ b/include/linux/objtool.h So I think this should really be in asm/frame.h, not in an objtool specific header. > @@ -0,0 +1,22 @@ > +#ifndef _LINUX_OBJTOOL_H > +#define _LINUX_OBJTOOL_H > + > +#ifdef CONFIG_STACK_VALIDATION > +/* > + * This C macro tells objtool to ignore the function when doing stack metadata > + * validation. It should only be used in special cases where you're 100% sure > + * it won't affect the reliability of frame pointers and kernel stack traces. > + * > + * For more information, see tools/objtool/Documentation/stack-validation.txt. > + */ > +#define STACK_FRAME_NON_STANDARD(_func) \ > + static void __used __section(__objtool_ignore_func) \ > + *__objtool_ignore_func_##_func = _func Likewise, this section should be named __func_non_standard_stack_frame or so, with objtool one (but not the only possible) consumer of it. > +#else /* !CONFIG_STACK_VALIDATION */ > + > +#define STACK_FRAME_NON_STANDARD(_func) > + > +#endif /* CONFIG_STACK_VALIDATION */ > + > +#endif /* _LINUX_OBJTOOL_H */ The CONFIG_STACK_VALIDATION dependency can be kept. Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe live-patching" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html