• Kees Cook's avatar
    bug: refactor away warn_slowpath_fmt_taint() · ee871133
    Kees Cook authored
    Patch series "Clean up WARN() "cut here" handling", v2.
    
    Christophe Leroy noticed that the fix for missing "cut here" in the WARN()
    case was adding explicit printk() calls instead of teaching the exception
    handler to add it.  This refactors the bug/warn infrastructure to pass
    this information as a new BUGFLAG.
    
    Longer details repeated from the last patch in the series:
    
    bug: move WARN_ON() "cut here" into exception handler
    
    The original cleanup of "cut here" missed the WARN_ON() case (that does
    not have a printk message), which was fixed recently by adding an explicit
    printk of "cut here".  This had the downside of adding a printk() to every
    WARN_ON() caller, which reduces the utility of using an instruction
    exception to streamline the resulting code.  By making this a new BUGFLAG,
    all of these can be removed and "cut here" can be handled by the exception
    handler.
    
    This was very pronounced on PowerPC, but the effect can be seen on x86 as
    well.  The resulting text size of a defconfig build shows some small
    savings from this patch:
    
       text    data     bss     dec     hex filename
    19691167        5134320 1646664 26472151        193eed7 vmlinux.before
    19676362        5134260 1663048 26473670        193f4c6 vmlinux.after
    
    This change also opens the door for creating something like BUG_MSG(),
    where a custom printk() before issuing BUG(), without confusing the "cut
    here" line.
    
    This patch (of 7):
    
    There's no reason to have specialized helpers for passing the warn taint
    down to __warn().  Consolidate and refactor helper macros, removing
    __WARN_printf() and warn_slowpath_fmt_taint().
    
    Link: http://lkml.kernel.org/r/20190819234111.9019-2-keescook@chromium.orgSigned-off-by: default avatarKees Cook <keescook@chromium.org>
    Cc: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: Drew Davenport <ddavenport@chromium.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
    Cc: Feng Tang <feng.tang@intel.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ee871133
bug.h 6.76 KB