diff options
| -rw-r--r-- | arch/x86/kernel/fpu/signal.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c index 060d6188b453..0071b794ed19 100644 --- a/arch/x86/kernel/fpu/signal.c +++ b/arch/x86/kernel/fpu/signal.c | |||
| @@ -62,6 +62,11 @@ static inline int save_fsave_header(struct task_struct *tsk, void __user *buf) | |||
| 62 | struct user_i387_ia32_struct env; | 62 | struct user_i387_ia32_struct env; |
| 63 | struct _fpstate_32 __user *fp = buf; | 63 | struct _fpstate_32 __user *fp = buf; |
| 64 | 64 | ||
| 65 | fpregs_lock(); | ||
| 66 | if (!test_thread_flag(TIF_NEED_FPU_LOAD)) | ||
| 67 | copy_fxregs_to_kernel(&tsk->thread.fpu); | ||
| 68 | fpregs_unlock(); | ||
| 69 | |||
| 65 | convert_from_fxsr(&env, tsk); | 70 | convert_from_fxsr(&env, tsk); |
| 66 | 71 | ||
| 67 | if (__copy_to_user(buf, &env, sizeof(env)) || | 72 | if (__copy_to_user(buf, &env, sizeof(env)) || |
