Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fbf065d authored by Avi Kivity's avatar Avi Kivity
Browse files

KVM: x86: Add missing locking to arch specific vcpu ioctls



Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 98001d8d
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1833,6 +1833,7 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
{
	int r;

	vcpu_load(vcpu);
	r = -E2BIG;
	if (cpuid->nent < vcpu->arch.cpuid_nent)
		goto out;
@@ -1844,6 +1845,7 @@ static int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,

out:
	cpuid->nent = vcpu->arch.cpuid_nent;
	vcpu_put(vcpu);
	return r;
}

@@ -2134,6 +2136,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,
	int r;
	unsigned bank_num = mcg_cap & 0xff, bank;

	vcpu_load(vcpu);
	r = -EINVAL;
	if (!bank_num || bank_num >= KVM_MAX_MCE_BANKS)
		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++)
		vcpu->arch.mce_banks[bank*4] = ~(u64)0;
out:
	vcpu_put(vcpu);
	return r;
}

@@ -2456,7 +2460,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
		r = -EFAULT;
		if (copy_from_user(&mce, argp, sizeof mce))
			goto out;
		vcpu_load(vcpu);
		r = kvm_vcpu_ioctl_x86_set_mce(vcpu, &mce);
		vcpu_put(vcpu);
		break;
	}
	case KVM_GET_VCPU_EVENTS: {