Re: [RESEND][patch V3 06/23] bug: Annotate WARN/BUG/stackfail as noinstr safe

From: Peter Zijlstra
Date: Thu Apr 02 2020 - 17:34:57 EST


On Thu, Apr 02, 2020 at 04:01:15PM -0500, Josh Poimboeuf wrote:
> On Fri, Mar 20, 2020 at 07:00:02PM +0100, Thomas Gleixner wrote:
> > Warnings, bugs and stack protection fails from noinstr sections, e.g. low
> > level and early entry code, are likely to be fatal.
> >
> > Mark them as "safe" to be invoked from noinstr protected code to avoid
> > annotating all usage sites. Getting the information out is important.
> >
> > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> > ---
> > arch/x86/include/asm/bug.h | 3 +++
> > include/asm-generic/bug.h | 9 +++++++--
> > kernel/panic.c | 4 +++-
> > 3 files changed, 13 insertions(+), 3 deletions(-)
> >
> > --- a/arch/x86/include/asm/bug.h
> > +++ b/arch/x86/include/asm/bug.h
> > @@ -70,13 +70,16 @@ do { \
> > #define HAVE_ARCH_BUG
> > #define BUG() \
> > do { \
> > + instr_begin(); \
> > _BUG_FLAGS(ASM_UD2, 0); \
> > unreachable(); \
> > } while (0)
>
> For visual symmetry at least, it seems like this wants an instr_end()
> before the unreachable(). Does objtool not like that?

Can't remember, but I think it's weird to put something after you know
it unreachable.