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

Commit 93736624 authored by Avi Kivity's avatar Avi Kivity
Browse files

KVM: Consolidate arch specific vcpu ioctl locking



Now that all arch specific ioctls have centralized locking, it is easy to
move it to the central dispatcher.

Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 19483d14
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -512,17 +512,16 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
	void __user *argp = (void __user *)arg;
	long r;

	if (ioctl == KVM_INTERRUPT) {
	switch (ioctl) {
	case KVM_INTERRUPT: {
		struct kvm_interrupt irq;
		r = -EFAULT;
		if (copy_from_user(&irq, argp, sizeof(irq)))
			goto out_nolock;
			goto out;
		r = kvm_vcpu_ioctl_interrupt(vcpu, &irq);
		goto out_nolock;
		goto out;
	}

	vcpu_load(vcpu);
	switch (ioctl) {
	case KVM_ENABLE_CAP:
	{
		struct kvm_enable_cap cap;
@@ -537,8 +536,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
	}

out:
	vcpu_put(vcpu);
out_nolock:
	return r;
}

+6 −7
Original line number Diff line number Diff line
@@ -638,16 +638,16 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
	void __user *argp = (void __user *)arg;
	long r;

	if (ioctl == KVM_S390_INTERRUPT) {
	switch (ioctl) {
	case KVM_S390_INTERRUPT: {
		struct kvm_s390_interrupt s390int;

		r = -EFAULT;
		if (copy_from_user(&s390int, argp, sizeof(s390int)))
			return -EFAULT;
		return kvm_s390_inject_vcpu(vcpu, &s390int);
			break;
		r = kvm_s390_inject_vcpu(vcpu, &s390int);
		break;
	}

	vcpu_load(vcpu);
	switch (ioctl) {
	case KVM_S390_STORE_STATUS:
		r = kvm_s390_vcpu_store_status(vcpu, arg);
		break;
@@ -666,7 +666,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
	default:
		r = -EINVAL;
	}
	vcpu_put(vcpu);
	return r;
}

+0 −2
Original line number Diff line number Diff line
@@ -2298,7 +2298,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
	int r;
	struct kvm_lapic_state *lapic = NULL;

	vcpu_load(vcpu);
	switch (ioctl) {
	case KVM_GET_LAPIC: {
		r = -EINVAL;
@@ -2496,7 +2495,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
		r = -EINVAL;
	}
out:
	vcpu_put(vcpu);
	kfree(lapic);
	return r;
}
+0 −2
Original line number Diff line number Diff line
@@ -1578,9 +1578,7 @@ static long kvm_vcpu_ioctl(struct file *filp,
		break;
	}
	default:
		vcpu_put(vcpu);
		r = kvm_arch_vcpu_ioctl(filp, ioctl, arg);
		vcpu_load(vcpu);
	}
out:
	vcpu_put(vcpu);