OSDN Git Service

KVM: PPC: Book3S HV: Read kvm->arch.emul_smt_mode under kvm->lock
authorPaul Mackerras <paulus@ozlabs.org>
Thu, 26 Jul 2018 05:38:41 +0000 (15:38 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Thu, 26 Jul 2018 05:38:41 +0000 (15:38 +1000)
commitb5c6f7607b908b1445f2556c8d2f3b1ec5fc5aa8
tree8f2b60ec1b6dc6462210929f2ede6f3a25f9de63
parent1ebe6b81ebdba8faf377d1d7d84ad9368e7a0bae
KVM: PPC: Book3S HV: Read kvm->arch.emul_smt_mode under kvm->lock

Commit 1e175d2 ("KVM: PPC: Book3S HV: Pack VCORE IDs to access full
VCPU ID space", 2018-07-25) added code that uses kvm->arch.emul_smt_mode
before any VCPUs are created.  However, userspace can change
kvm->arch.emul_smt_mode at any time up until the first VCPU is created.
Hence it is (theoretically) possible for the check in
kvmppc_core_vcpu_create_hv() to race with another userspace thread
changing kvm->arch.emul_smt_mode.

This fixes it by moving the test that uses kvm->arch.emul_smt_mode into
the block where kvm->lock is held.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
arch/powerpc/kvm/book3s_hv.c