diff options
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 2 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index 48a48bdc59c3..70d224d4264c 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -951,7 +951,9 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
951 | goto out; | 951 | goto out; |
952 | r = kvm_setup_default_irq_routing(kvm); | 952 | r = kvm_setup_default_irq_routing(kvm); |
953 | if (r) { | 953 | if (r) { |
954 | mutex_lock(&kvm->slots_lock); | ||
954 | kvm_ioapic_destroy(kvm); | 955 | kvm_ioapic_destroy(kvm); |
956 | mutex_unlock(&kvm->slots_lock); | ||
955 | goto out; | 957 | goto out; |
956 | } | 958 | } |
957 | break; | 959 | break; |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index cbaea7dd5963..f569da8ff839 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -3309,8 +3309,10 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
3309 | if (vpic) { | 3309 | if (vpic) { |
3310 | r = kvm_ioapic_init(kvm); | 3310 | r = kvm_ioapic_init(kvm); |
3311 | if (r) { | 3311 | if (r) { |
3312 | mutex_lock(&kvm->slots_lock); | ||
3312 | kvm_io_bus_unregister_dev(kvm, KVM_PIO_BUS, | 3313 | kvm_io_bus_unregister_dev(kvm, KVM_PIO_BUS, |
3313 | &vpic->dev); | 3314 | &vpic->dev); |
3315 | mutex_unlock(&kvm->slots_lock); | ||
3314 | kfree(vpic); | 3316 | kfree(vpic); |
3315 | goto create_irqchip_unlock; | 3317 | goto create_irqchip_unlock; |
3316 | } | 3318 | } |
@@ -3321,10 +3323,12 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
3321 | smp_wmb(); | 3323 | smp_wmb(); |
3322 | r = kvm_setup_default_irq_routing(kvm); | 3324 | r = kvm_setup_default_irq_routing(kvm); |
3323 | if (r) { | 3325 | if (r) { |
3326 | mutex_lock(&kvm->slots_lock); | ||
3324 | mutex_lock(&kvm->irq_lock); | 3327 | mutex_lock(&kvm->irq_lock); |
3325 | kvm_ioapic_destroy(kvm); | 3328 | kvm_ioapic_destroy(kvm); |
3326 | kvm_destroy_pic(kvm); | 3329 | kvm_destroy_pic(kvm); |
3327 | mutex_unlock(&kvm->irq_lock); | 3330 | mutex_unlock(&kvm->irq_lock); |
3331 | mutex_unlock(&kvm->slots_lock); | ||
3328 | } | 3332 | } |
3329 | create_irqchip_unlock: | 3333 | create_irqchip_unlock: |
3330 | mutex_unlock(&kvm->lock); | 3334 | mutex_unlock(&kvm->lock); |