Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[safe/jmp/linux-2.6] / arch / x86 / kernel / xsave.c
index 15c3e69..c5ee17e 100644 (file)
@@ -89,7 +89,7 @@ int save_i387_xstate(void __user *buf)
 
        if (!used_math())
                return 0;
-       clear_used_math(); /* trigger finit */
+
        if (task_thread_info(tsk)->status & TS_USEDFPU) {
                /*
                 * Start with clearing the user buffer. This will present a
@@ -114,6 +114,8 @@ int save_i387_xstate(void __user *buf)
                        return -1;
        }
 
+       clear_used_math(); /* trigger finit */
+
        if (task_thread_info(tsk)->status & TS_XSAVE) {
                struct _fpstate __user *fx = buf;
                struct _xstate __user *x = buf;
@@ -159,7 +161,7 @@ int save_i387_xstate(void __user *buf)
  * Restore the extended state if present. Otherwise, restore the FP/SSE
  * state.
  */
-int restore_user_xstate(void __user *buf)
+static int restore_user_xstate(void __user *buf)
 {
        struct _fpx_sw_bytes fx_sw_user;
        u64 mask;
@@ -324,7 +326,7 @@ void __ref xsave_cntxt_init(void)
        }
 
        /*
-        * for now OS knows only about FP/SSE
+        * Support only the state known to OS.
         */
        pcntxt_mask = pcntxt_mask & XCNTXT_MASK;
        xsave_init();