Skip to content
  • Jann Horn's avatar
    x86/kasan: Print original address on #GP · 2f004eea
    Jann Horn authored
    
    
    Make #GP exceptions caused by out-of-bounds KASAN shadow accesses easier
    to understand by computing the address of the original access and
    printing that. More details are in the comments in the patch.
    
    This turns an error like this:
    
      kasan: CONFIG_KASAN_INLINE enabled
      kasan: GPF could be caused by NULL-ptr deref or user memory access
      general protection fault, probably for non-canonical address
          0xe017577ddf75b7dd: 0000 [#1] PREEMPT SMP KASAN PTI
    
    into this:
    
      general protection fault, probably for non-canonical address
          0xe017577ddf75b7dd: 0000 [#1] PREEMPT SMP KASAN PTI
      KASAN: maybe wild-memory-access in range
          [0x00badbeefbadbee8-0x00badbeefbadbeef]
    
    The hook is placed in architecture-independent code, but is currently
    only wired up to the X86 exception handler because I'm not sufficiently
    familiar with the address space layout and exception handling mechanisms
    on other architectures.
    
    Signed-off-by: default avatarJann Horn <jannh@google.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: kasan-dev@googlegroups.com
    Cc: linux-mm <linux-mm@kvack.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20191218231150.12139-4-jannh@google.com
    2f004eea