diff options
Diffstat (limited to 'arch/x86/mm/extable.c')
| -rw-r--r-- | arch/x86/mm/extable.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c index 79ae939970d3..fcd06f7526de 100644 --- a/arch/x86/mm/extable.c +++ b/arch/x86/mm/extable.c @@ -135,7 +135,12 @@ void __init early_fixup_exception(struct pt_regs *regs, int trapnr)  	if (early_recursion_flag > 2)  		goto halt_loop; -	if (regs->cs != __KERNEL_CS) +	/* +	 * Old CPUs leave the high bits of CS on the stack +	 * undefined.  I'm not sure which CPUs do this, but at least +	 * the 486 DX works this way. +	 */ +	if ((regs->cs & 0xFFFF) != __KERNEL_CS)  		goto fail;  	/* | 

