KVM: Destroy target device if coalesced MMIO unregistration fails
[sfrench/cifs-2.6.git] / virt / kvm / coalesced_mmio.c
index 0be80c213f7f2513a6bea46e9dd436a6cb15002a..5ef88f5a08640f57a0fbcd10546393039e56e302 100644 (file)
@@ -187,15 +187,17 @@ int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm,
                        r = kvm_io_bus_unregister_dev(kvm,
                                zone->pio ? KVM_PIO_BUS : KVM_MMIO_BUS, &dev->dev);
 
+                       kvm_iodevice_destructor(&dev->dev);
+
                        /*
                         * On failure, unregister destroys all devices on the
                         * bus _except_ the target device, i.e. coalesced_zones
-                        * has been modified.  No need to restart the walk as
-                        * there aren't any zones left.
+                        * has been modified.  Bail after destroying the target
+                        * device, there's no need to restart the walk as there
+                        * aren't any zones left.
                         */
                        if (r)
                                break;
-                       kvm_iodevice_destructor(&dev->dev);
                }
        }