diff options
author | Heiko Carstens <hca@linux.ibm.com> | 2023-11-30 18:56:01 +0100 |
---|---|---|
committer | Alexander Gordeev <agordeev@linux.ibm.com> | 2023-12-11 14:33:05 +0100 |
commit | 3b2e00f167f493ca1de7451310f1ce56f0b27fcb (patch) | |
tree | 4510723a2e6571fb70e00903c6f5e929782ad1a5 /arch/s390/kvm/kvm-s390.c | |
parent | b988b1bb0053c0dcd26187d29ef07566a565cf55 (diff) | |
download | linux-3b2e00f167f493ca1de7451310f1ce56f0b27fcb.tar.gz linux-3b2e00f167f493ca1de7451310f1ce56f0b27fcb.tar.bz2 linux-3b2e00f167f493ca1de7451310f1ce56f0b27fcb.zip |
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: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Diffstat (limited to 'arch/s390/kvm/kvm-s390.c')
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 16e32174807f..1a1af4db5afc 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -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; |