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

Commit 49f520b9 authored by David Hildenbrand's avatar David Hildenbrand Committed by Radim Krčmář
Browse files

KVM: x86: push usage of slots_lock down



Let's just move it to the place where it is actually needed.

Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
parent ba7454e1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -660,9 +660,11 @@ void kvm_pic_destroy(struct kvm *kvm)
	if (!vpic)
		return;

	mutex_lock(&kvm->slots_lock);
	kvm_io_bus_unregister_dev(vpic->kvm, KVM_PIO_BUS, &vpic->dev_master);
	kvm_io_bus_unregister_dev(vpic->kvm, KVM_PIO_BUS, &vpic->dev_slave);
	kvm_io_bus_unregister_dev(vpic->kvm, KVM_PIO_BUS, &vpic->dev_eclr);
	mutex_unlock(&kvm->slots_lock);

	kvm->arch.vpic = NULL;
	kfree(vpic);
+2 −0
Original line number Diff line number Diff line
@@ -637,7 +637,9 @@ void kvm_ioapic_destroy(struct kvm *kvm)
		return;

	cancel_delayed_work_sync(&ioapic->eoi_inject);
	mutex_lock(&kvm->slots_lock);
	kvm_io_bus_unregister_dev(kvm, KVM_MMIO_BUS, &ioapic->dev);
	mutex_unlock(&kvm->slots_lock);
	kvm->arch.vioapic = NULL;
	kfree(ioapic);
}
+0 −4
Original line number Diff line number Diff line
@@ -4015,9 +4015,7 @@ long kvm_arch_vm_ioctl(struct file *filp,

		r = kvm_ioapic_init(kvm);
		if (r) {
			mutex_lock(&kvm->slots_lock);
			kvm_pic_destroy(kvm);
			mutex_unlock(&kvm->slots_lock);
			goto create_irqchip_unlock;
		}

@@ -4027,10 +4025,8 @@ long kvm_arch_vm_ioctl(struct file *filp,
			kvm->arch.irqchip_mode = KVM_IRQCHIP_NONE;
			/* Pairs with smp_rmb() when reading irqchip_mode */
			smp_wmb();
			mutex_lock(&kvm->slots_lock);
			kvm_ioapic_destroy(kvm);
			kvm_pic_destroy(kvm);
			mutex_unlock(&kvm->slots_lock);
			goto create_irqchip_unlock;
		}
		/* Write kvm->irq_routing before enabling irqchip_in_kernel. */