diff -Nru linux-old/arch/i386/kernel/i387.c linux-new/arch/i386/kernel/i387.c
--- linux-old/arch/i386/kernel/i387.c	2002-10-23 20:58:31.000000000 -0400
+++ linux-new/arch/i386/kernel/i387.c	2002-10-23 21:01:34.000000000 -0400
@@ -376,13 +376,15 @@
 
 static inline int restore_i387_fxsave( struct _fpstate *buf )
 {
+	int err;
 	struct task_struct *tsk = current;
 	clear_fpu( tsk );
-	if ( __copy_from_user( &tsk->thread.i387.fxsave, &buf->_fxsr_env[0],
-			       sizeof(struct i387_fxsave_struct) ) )
-		return 1;
+	err = __copy_from_user(&tsk->thread.i387.fxsave, &buf->_fxsr_env[0],
+			       sizeof(struct i387_fxsave_struct));
 	/* mxcsr bit 6 and 31-16 must be zero for security reasons */
 	tsk->thread.i387.fxsave.mxcsr &= 0xffbf;
+	if (err)
+		return 1;
 	return convert_fxsr_from_user( &tsk->thread.i387.fxsave, buf );
 }
 
