• Andy Lutomirski's avatar
    x86/traps: Ignore high word of regs->cs in early_idt_handler_common · 213060d9
    Andy Lutomirski authored
    This is a backport of:
    commit fc0e81b2 upstream
    
    On the 80486 DX, it seems that some exceptions may leave garbage in
    the high bits of CS.  This causes sporadic failures in which
    early_fixup_exception() refuses to fix up an exception.
    
    As far as I can tell, this has been buggy for a long time, but the
    problem seems to have been exacerbated by commits:
    
      1e02ce4c ("x86: Store a per-cpu shadow copy of CR4")
      e1bfc11c ("x86/init: Fix cr4_init_shadow() on CR4-less machines")
    
    This appears to have broken for as long as we've had early
    exception handling.
    
    [ This backport should apply to kernels from 3.4 - 4.5. ]
    
    Fixes: 4c5023a3 ("x86-32: Handle exception table entries during early boot")
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: stable@vger.kernel.org
    Reported-by: default avatarMatthew Whitehead <tedheadster@gmail.com>
    Signed-off-by: default avatarAndy Lutomirski <luto@kernel.org>
    Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
    213060d9
head_32.S 18.4 KB