diff options
author | Clark Williams <williams@redhat.com> | 2012-02-29 09:50:56 -0600 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2012-02-29 09:50:56 -0600 |
commit | 5f269e50cb10cd1a74b89f7fda87b0c9082754f0 (patch) | |
tree | 76f82e09728bbed59baebcff2e0b008f0ab5eead /arch/x86/kernel/xsave.c | |
parent | a0c034c3726715d1928b301ddd43c51799c0c07a (diff) | |
parent | 1de504ea25617f701ac3a246a1c9dfd2246d4900 (diff) |
Merge commit 'v3.2.8' into rt-3.2.7-rt13v3.2.8-rt13
Conflicts:
arch/x86/kernel/process_32.c
Diffstat (limited to 'arch/x86/kernel/xsave.c')
-rw-r--r-- | arch/x86/kernel/xsave.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c index a3911343976b..711091114119 100644 --- a/arch/x86/kernel/xsave.c +++ b/arch/x86/kernel/xsave.c @@ -47,7 +47,7 @@ void __sanitize_i387_state(struct task_struct *tsk) if (!fx) return; - BUG_ON(task_thread_info(tsk)->status & TS_USEDFPU); + BUG_ON(__thread_has_fpu(tsk)); xstate_bv = tsk->thread.fpu.state->xsave.xsave_hdr.xstate_bv; @@ -168,7 +168,7 @@ int save_i387_xstate(void __user *buf) if (!used_math()) return 0; - if (task_thread_info(tsk)->status & TS_USEDFPU) { + if (user_has_fpu()) { if (use_xsave()) err = xsave_user(buf); else @@ -176,8 +176,7 @@ int save_i387_xstate(void __user *buf) if (err) return err; - task_thread_info(tsk)->status &= ~TS_USEDFPU; - stts(); + user_fpu_end(); } else { sanitize_i387_state(tsk); if (__copy_to_user(buf, &tsk->thread.fpu.state->fxsave, @@ -292,10 +291,7 @@ int restore_i387_xstate(void __user *buf) return err; } - if (!(task_thread_info(current)->status & TS_USEDFPU)) { - clts(); - task_thread_info(current)->status |= TS_USEDFPU; - } + user_fpu_begin(); if (use_xsave()) err = restore_user_xstate(buf); else |