diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 166fbb9e5c..a3d986f0e7 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -2450,14 +2450,14 @@ cleanup:
     VIR_FORCE_CLOSE(dataFD[0]);
     VIR_FORCE_CLOSE(dataFD[1]);
     if (vm) {
-        if (ret >= 0 || vm->persistent)
-            virObjectUnlock(vm);
-        else
-            qemuDomainRemoveInactive(driver, vm);
         if (ret < 0) {
             virPortAllocatorRelease(driver->remotePorts, priv->nbdPort);
             priv->nbdPort = 0;
         }
+        if (ret >= 0 || vm->persistent)
+            virObjectUnlock(vm);
+        else
+            qemuDomainRemoveInactive(driver, vm);
     }
     if (event)
         qemuDomainEventQueue(driver, event);