From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759760AbcBYHv5 (ORCPT ); Thu, 25 Feb 2016 02:51:57 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35199 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758875AbcBYHvz (ORCPT ); Thu, 25 Feb 2016 02:51:55 -0500 Date: Thu, 25 Feb 2016 08:51:49 +0100 From: Ingo Molnar To: Josh Poimboeuf Cc: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org, live-patching@vger.kernel.org, Michal Marek , Peter Zijlstra , Andy Lutomirski , Borislav Petkov , Linus Torvalds , Andi Kleen , Pedro Alves , Namhyung Kim , Bernd Petrovitsch , Chris J Arges , Andrew Morton , Jiri Slaby , Arnaldo Carvalho de Melo Subject: Re: [PATCH v17 4/9] x86/objtool: Add STACK_FRAME_NON_STANDARD macro Message-ID: <20160225075149.GA2354@gmail.com> References: <6b5098f327af4dfc11ad9bcdc274b0c8f0e2b2e5.1456331595.git.jpoimboe@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6b5098f327af4dfc11ad9bcdc274b0c8f0e2b2e5.1456331595.git.jpoimboe@redhat.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Josh Poimboeuf 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 > --- > 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 > S: Supported > F: tools/objtool/ > +F: include/linux/objtool.h > > OMAP SUPPORT > M: Tony Lindgren > 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