diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2012-09-21 20:18:44 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2012-09-21 20:18:44 -0400 |
commit | 49b8c695e331c9685e6ffdbf34872509d77c8459 (patch) | |
tree | d4afdfae0115b2ab56687d23d6329d6ad934788f /arch/x86/kernel/traps.c | |
parent | e59d1b0a24199db01978e6c1e89859eda93ce683 (diff) | |
parent | b1a74bf8212367be2b1d6685c11a84e056eaaaf1 (diff) |
Merge branch 'x86/fpu' into x86/smap
Reason for merge:
x86/fpu changed the structure of some of the code that x86/smap
changes; mostly fpu-internal.h but also minor changes to the
signal code.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Resolved Conflicts:
arch/x86/ia32/ia32_signal.c
arch/x86/include/asm/fpu-internal.h
arch/x86/kernel/signal.c
Diffstat (limited to 'arch/x86/kernel/traps.c')
-rw-r--r-- | arch/x86/kernel/traps.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index b481341c9369..4f4aba0551b0 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -613,11 +613,12 @@ void math_state_restore(void) | |||
613 | } | 613 | } |
614 | 614 | ||
615 | __thread_fpu_begin(tsk); | 615 | __thread_fpu_begin(tsk); |
616 | |||
616 | /* | 617 | /* |
617 | * Paranoid restore. send a SIGSEGV if we fail to restore the state. | 618 | * Paranoid restore. send a SIGSEGV if we fail to restore the state. |
618 | */ | 619 | */ |
619 | if (unlikely(restore_fpu_checking(tsk))) { | 620 | if (unlikely(restore_fpu_checking(tsk))) { |
620 | __thread_fpu_end(tsk); | 621 | drop_init_fpu(tsk); |
621 | force_sig(SIGSEGV, tsk); | 622 | force_sig(SIGSEGV, tsk); |
622 | return; | 623 | return; |
623 | } | 624 | } |
@@ -629,6 +630,8 @@ EXPORT_SYMBOL_GPL(math_state_restore); | |||
629 | dotraplinkage void __kprobes | 630 | dotraplinkage void __kprobes |
630 | do_device_not_available(struct pt_regs *regs, long error_code) | 631 | do_device_not_available(struct pt_regs *regs, long error_code) |
631 | { | 632 | { |
633 | BUG_ON(use_eager_fpu()); | ||
634 | |||
632 | #ifdef CONFIG_MATH_EMULATION | 635 | #ifdef CONFIG_MATH_EMULATION |
633 | if (read_cr0() & X86_CR0_EM) { | 636 | if (read_cr0() & X86_CR0_EM) { |
634 | struct math_emu_info info = { }; | 637 | struct math_emu_info info = { }; |