Re: [PATCH 7/7] bug: Move WARN_ON() "cut here" into exception handler

From: Kees Cook
Date: Wed Aug 28 2019 - 13:36:53 EST


On Tue, Aug 20, 2019 at 09:14:29PM -0400, Steven Rostedt wrote:
> On Tue, 20 Aug 2019 12:58:49 +0200
> Christophe Leroy <christophe.leroy@xxxxxx> wrote:
>
> > >> index 1077366f496b..6c22e8a6f9de 100644
> > >> --- a/lib/bug.c
> > >> +++ b/lib/bug.c
> > >> @@ -181,6 +181,15 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
> > >> }
> > >> }
> > >>
> > >> + /*
> > >> + * BUG() and WARN_ON() families don't print a custom debug message
> > >> + * before triggering the exception handler, so we must add the
> > >> + * "cut here" line now. WARN() issues its own "cut here" before the
> > >> + * extra debugging message it writes before triggering the handler.
> > >> + */
> > >> + if ((bug->flags & BUGFLAG_PRINTK) == 0)
> > >> + printk(KERN_DEFAULT CUT_HERE);
> > >
> > > I'm not loving that BUGFLAG_PRINTK name, BUGFLAG_CUT_HERE makes more
> > > sense to me.
> > >
> >
> > Actually it would be BUGFLAG_NO_CUT_HERE then, otherwise all arches not
> > using the generic macros will have to add the flag to get the "cut here"
> > line.
> >
>
> Perhaps they all should be audited to see if they don't have the same
> problem?

As far as I could tell, all the other combinations end up either using
the slow path bug helpers or the common exception handler.
warn-with-a-fmt-string is the only case that does the "early cut here".

--
Kees Cook