• Andy Lutomirski's avatar
    x86_64, traps: Stop using IST for #SS · 4c414592
    Andy Lutomirski authored
    commit 6f442be2 upstream.
    
    On a 32-bit kernel, this has no effect, since there are no IST stacks.
    
    On a 64-bit kernel, #SS can only happen in user code, on a failed iret
    to user space, a canonical violation on access via RSP or RBP, or a
    genuine stack segment violation in 32-bit kernel code.  The first two
    cases don't need IST, and the latter two cases are unlikely fatal bugs,
    and promoting them to double faults would be fine.
    
    This fixes a bug in which the espfix64 code mishandles a stack segment
    violation.
    
    This saves 4k of memory per CPU and a tiny bit of code.
    Signed-off-by: default avatarAndy Lutomirski <luto@amacapital.net>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2:
     - No need to define trace_stack_segment
     - Use the errorentry macro to generate #SS asm code
     - Adjust context
     - Checked that this matches Luis's backport for Ubuntu]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    4c414592
traps.c 19.2 KB