• Jann Horn's avatar
    x86/entry/64: Wipe KASAN stack shadow before rewind_stack_do_exit() · f12d11c5
    Jann Horn authored
    Reset the KASAN shadow state of the task stack before rewinding RSP.
    Without this, a kernel oops will leave parts of the stack poisoned, and
    code running under do_exit() can trip over such poisoned regions and cause
    nonsensical false-positive KASAN reports about stack-out-of-bounds bugs.
    
    This does not wipe the exception stacks; if an oops happens on an exception
    stack, it might result in random KASAN false-positives from other tasks
    afterwards. This is probably relatively uninteresting, since if the kernel
    oopses on an exception stack, there are most likely bigger things to worry
    about. It'd be more interesting if vmapped stacks and KASAN were
    compatible, since then handle_stack_overflow() would oops from exception
    stack context.
    
    Fixes: 2deb4be2 ("x86/dumpstack: When OOPSing, rewind the stack before do_exit()")
    Signed-off-by: default avatarJann Horn <jannh@google.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: kasan-dev@googlegroups.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180828184033.93712-1-jannh@google.com
    f12d11c5
dumpstack.c 11.2 KB