Loading include/linux/kvm_host.h +4 −0 Original line number Diff line number Diff line Loading @@ -427,6 +427,10 @@ struct kvm { static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i) { /* Pairs with smp_wmb() in kvm_vm_ioctl_create_vcpu, in case * the caller has read kvm->online_vcpus before (as is the case * for kvm_for_each_vcpu, for example). */ smp_rmb(); return kvm->vcpus[i]; } Loading virt/kvm/kvm_main.c +5 −0 Original line number Diff line number Diff line Loading @@ -2206,6 +2206,11 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) } kvm->vcpus[atomic_read(&kvm->online_vcpus)] = vcpu; /* * Pairs with smp_rmb() in kvm_get_vcpu. Write kvm->vcpus * before kvm->online_vcpu's incremented value. */ smp_wmb(); atomic_inc(&kvm->online_vcpus); Loading Loading
include/linux/kvm_host.h +4 −0 Original line number Diff line number Diff line Loading @@ -427,6 +427,10 @@ struct kvm { static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i) { /* Pairs with smp_wmb() in kvm_vm_ioctl_create_vcpu, in case * the caller has read kvm->online_vcpus before (as is the case * for kvm_for_each_vcpu, for example). */ smp_rmb(); return kvm->vcpus[i]; } Loading
virt/kvm/kvm_main.c +5 −0 Original line number Diff line number Diff line Loading @@ -2206,6 +2206,11 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) } kvm->vcpus[atomic_read(&kvm->online_vcpus)] = vcpu; /* * Pairs with smp_rmb() in kvm_get_vcpu. Write kvm->vcpus * before kvm->online_vcpu's incremented value. */ smp_wmb(); atomic_inc(&kvm->online_vcpus); Loading