KVM: x86: Add missing locking to arch specific vcpu ioctls
Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
@ -1833,6 +1833,7 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
|
|||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
vcpu_load(vcpu);
|
||||||
r = -E2BIG;
|
r = -E2BIG;
|
||||||
if (cpuid->nent < vcpu->arch.cpuid_nent)
|
if (cpuid->nent < vcpu->arch.cpuid_nent)
|
||||||
goto out;
|
goto out;
|
||||||
@ -1844,6 +1845,7 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
cpuid->nent = vcpu->arch.cpuid_nent;
|
cpuid->nent = vcpu->arch.cpuid_nent;
|
||||||
|
vcpu_put(vcpu);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2134,6 +2136,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,
|
|||||||
int r;
|
int r;
|
||||||
unsigned bank_num = mcg_cap & 0xff, bank;
|
unsigned bank_num = mcg_cap & 0xff, bank;
|
||||||
|
|
||||||
|
vcpu_load(vcpu);
|
||||||
r = -EINVAL;
|
r = -EINVAL;
|
||||||
if (!bank_num || bank_num >= KVM_MAX_MCE_BANKS)
|
if (!bank_num || bank_num >= KVM_MAX_MCE_BANKS)
|
||||||
goto out;
|
goto out;
|
||||||
@ -2148,6 +2151,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,
|
|||||||
for (bank = 0; bank < bank_num; bank++)
|
for (bank = 0; bank < bank_num; bank++)
|
||||||
vcpu->arch.mce_banks[bank*4] = ~(u64)0;
|
vcpu->arch.mce_banks[bank*4] = ~(u64)0;
|
||||||
out:
|
out:
|
||||||
|
vcpu_put(vcpu);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2456,7 +2460,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
|
|||||||
r = -EFAULT;
|
r = -EFAULT;
|
||||||
if (copy_from_user(&mce, argp, sizeof mce))
|
if (copy_from_user(&mce, argp, sizeof mce))
|
||||||
goto out;
|
goto out;
|
||||||
|
vcpu_load(vcpu);
|
||||||
r = kvm_vcpu_ioctl_x86_set_mce(vcpu, &mce);
|
r = kvm_vcpu_ioctl_x86_set_mce(vcpu, &mce);
|
||||||
|
vcpu_put(vcpu);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case KVM_GET_VCPU_EVENTS: {
|
case KVM_GET_VCPU_EVENTS: {
|
||||||
|
Reference in New Issue
Block a user