|
@@ -3431,6 +3431,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))
|
|
@@ -3438,7 +3439,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: {
|