• Kees Cook's avatar
    bug: fix "cut here" location for __WARN_TAINT architectures · a7bed27a
    Kees Cook authored
    Prior to v4.11, x86 used warn_slowpath_fmt() for handling WARN()s.
    After WARN() was moved to using UD0 on x86, the warning text started
    appearing _before_ the "cut here" line.  This appears to have been a
    long-standing bug on architectures that used __WARN_TAINT, but it didn't
    get fixed.
    
    v4.11 and earlier on x86:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 2956 at drivers/misc/lkdtm_bugs.c:65 lkdtm_WARNING+0x21/0x30
      This is a warning message
      Modules linked in:
    
    v4.12 and later on x86:
    
      This is a warning message
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 2982 at drivers/misc/lkdtm_bugs.c:68 lkdtm_WARNING+0x15/0x20
      Modules linked in:
    
    With this fix:
    
      ------------[ cut here ]------------
      This is a warning message
      WARNING: CPU: 3 PID: 3009 at drivers/misc/lkdtm_bugs.c:67 lkdtm_WARNING+0x15/0x20
    
    Since the __FILE__ reporting happens as part of the UD0 handler, it
    isn't trivial to move the message to after the WARNING line, but at
    least we can fix the position of the "cut here" line so all the various
    logging tools will start including the actual runtime warning message
    again, when they follow the instruction and "cut here".
    
    Link: http://lkml.kernel.org/r/1510100869-73751-4-git-send-email-keescook@chromium.org
    Fixes: 9a93848f ("x86/debug: Implement __WARN() using UD0")
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Fengguang Wu <fengguang.wu@intel.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a7bed27a
bug.h 6.53 KB