KVM: x86: push usage of slots_lock down
Let's just move it to the place where it is actually needed. Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
This commit is contained in:
parent
ba7454e17f
commit
49f520b99a
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user