• A
    x86, entry: Switch stacks on a paranoid entry from userspace · 48e08d0f
    Andy Lutomirski 提交于
    This causes all non-NMI, non-double-fault kernel entries from
    userspace to run on the normal kernel stack.  Double-fault is
    exempt to minimize confusion if we double-fault directly from
    userspace due to a bad kernel stack.
    
    This is, suprisingly, simpler and shorter than the current code.  It
    removes the IMO rather frightening paranoid_userspace path, and it
    make sync_regs much simpler.
    
    There is no risk of stack overflow due to this change -- the kernel
    stack that we switch to is empty.
    
    This will also enable us to create non-atomic sections within
    machine checks from userspace, which will simplify memory failure
    handling.  It will also allow the upcoming fsgsbase code to be
    simplified, because it doesn't need to worry about usergs when
    scheduling in paranoid_exit, as that code no longer exists.
    
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Tony Luck <tony.luck@intel.com>
    Acked-by: NBorislav Petkov <bp@alien8.de>
    Signed-off-by: NAndy Lutomirski <luto@amacapital.net>
    48e08d0f
traps.c 24.6 KB