KVM: x86: fix missed SRCU usage in kvm_lapic_set_vapic_addr
[firefly-linux-kernel-4.4.55.git] / arch / x86 / kvm / x86.c
index 685ef431a41d1df9ae19fb59617ac3a956c284ef..2a04b5fa28c2d8eab3a708f1656404071bf50685 100644 (file)
@@ -3317,6 +3317,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
        };
        case KVM_SET_VAPIC_ADDR: {
                struct kvm_vapic_addr va;
+               int idx;
 
                r = -EINVAL;
                if (!lapic_in_kernel(vcpu))
@@ -3324,7 +3325,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
                r = -EFAULT;
                if (copy_from_user(&va, argp, sizeof va))
                        goto out;
+               idx = srcu_read_lock(&vcpu->kvm->srcu);
                r = kvm_lapic_set_vapic_addr(vcpu, va.vapic_addr);
+               srcu_read_unlock(&vcpu->kvm->srcu, idx);
                break;
        }
        case KVM_X86_SETUP_MCE: {