]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/x86/kernel/xsave.c
Merge branches 'x86-cleanups-for-linus', 'x86-vmware-for-linus', 'x86-mtrr-for-linus...
[net-next-2.6.git] / arch / x86 / kernel / xsave.c
index 980149867a1910db07040aed05537ecd66e3752e..a4ae302f03aa8b93fc18c1e71cf0afe3a2f8af02 100644 (file)
@@ -92,14 +92,6 @@ int save_i387_xstate(void __user *buf)
                return 0;
 
        if (task_thread_info(tsk)->status & TS_USEDFPU) {
-               /*
-                * Start with clearing the user buffer. This will present a
-                * clean context for the bytes not touched by the fxsave/xsave.
-                */
-               err = __clear_user(buf, sig_xstate_size);
-               if (err)
-                       return err;
-
                if (use_xsave())
                        err = xsave_user(buf);
                else
@@ -185,8 +177,8 @@ static int restore_user_xstate(void __user *buf)
         * init the state skipped by the user.
         */
        mask = pcntxt_mask & ~mask;
-
-       xrstor_state(init_xstate_buf, mask);
+       if (unlikely(mask))
+               xrstor_state(init_xstate_buf, mask);
 
        return 0;