summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/fpu/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/fpu/core.c')
-rw-r--r--arch/x86/kernel/fpu/core.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index e0e0ee565dc3..8470df44c06d 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -126,12 +126,10 @@ void __kernel_fpu_end(void)
{
struct fpu *fpu = &current->thread.fpu;
- if (fpu->fpregs_active) {
- if (WARN_ON_FPU(copy_kernel_to_fpregs(fpu)))
- fpu__clear(fpu);
- } else {
+ if (fpu->fpregs_active)
+ copy_kernel_to_fpregs(fpu);
+ else
__fpregs_deactivate_hw();
- }
kernel_fpu_enable();
}
@@ -370,14 +368,8 @@ void fpu__restore(struct fpu *fpu)
/* Avoid __kernel_fpu_begin() right after fpregs_activate() */
kernel_fpu_disable();
fpregs_activate(fpu);
- if (unlikely(copy_kernel_to_fpregs(fpu))) {
- /* Copying the kernel state to FPU registers should never fail: */
- WARN_ON_FPU(1);
- fpu__clear(fpu);
- force_sig_info(SIGSEGV, SEND_SIG_PRIV, current);
- } else {
- fpu->counter++;
- }
+ copy_kernel_to_fpregs(fpu);
+ fpu->counter++;
kernel_fpu_enable();
}
EXPORT_SYMBOL_GPL(fpu__restore);