Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df24fb85 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by H. Peter Anvin
Browse files

x86, fpu: __restore_xstate_sig()->math_state_restore() needs preempt_disable()



Add preempt_disable() + preempt_enable() around math_state_restore() in
__restore_xstate_sig(). Otherwise __switch_to() after __thread_fpu_begin()
can overwrite fpu->state we are going to restore.

Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
Link: http://lkml.kernel.org/r/20140902175717.GA21649@redhat.com


Cc: <stable@vger.kernel.org> # v3.7+
Reviewed-by: default avatarSuresh Siddha <sbsiddha@gmail.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
parent 66463db4
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -400,8 +400,11 @@ int __restore_xstate_sig(void __user *buf, void __user *buf_fx, int size)
			set_used_math();
		}

		if (use_eager_fpu())
		if (use_eager_fpu()) {
			preempt_disable();
			math_state_restore();
			preempt_enable();
		}

		return err;
	} else {