diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-11-23 10:23:09 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-11-23 10:23:09 +0100 |
commit | ec84f0056711efe93f034c86dd65e0de8d3531ff (patch) | |
tree | 3e50d385d645487924bcac1f5fb33b496cda6dc0 /arch/x86/mm/extable.c | |
parent | d03266910a533d874c01ef2ca8dc73009f2925fa (diff) | |
parent | 23400ac997062647f2b63c82030d189671b1effe (diff) |
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
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; /* |