Commit 3b2e00f1 authored by Heiko Carstens's avatar Heiko Carstens Committed by Alexander Gordeev
Browse files

KVM: s390: use READ_ONCE() to read fpc register value



Use READ_ONCE() to read a vcpu's floating point register value from
the memory mapped area. This avoids that, depending on code
generation, a different value is tested for validity than the one that
is used, since user space can modify the area concurrently and the
compiler is free to generate code that reads the value multiple times.

Reviewed-by: default avatarChristian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent b988b1bb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4962,7 +4962,7 @@ static void sync_regs(struct kvm_vcpu *vcpu)
		current->thread.fpu.regs = vcpu->run->s.regs.vrs;
	else
		current->thread.fpu.regs = vcpu->run->s.regs.fprs;
	current->thread.fpu.fpc = vcpu->run->s.regs.fpc;
	current->thread.fpu.fpc = READ_ONCE(vcpu->run->s.regs.fpc);
	if (test_fp_ctl(current->thread.fpu.fpc))
		/* User space provided an invalid FPC, let's clear it */
		current->thread.fpu.fpc = 0;