diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 30f98da1ea..3c0d7e9572 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3640,15 +3640,15 @@ qemuMigrationRun(virQEMUDriverPtr driver,
 
     if (flags & VIR_MIGRATE_PERSIST_DEST) {
         if (persist_xml) {
-            persistDef = qemuMigrationPrepareDef(driver, persist_xml,
-                                                 NULL, NULL);
-        } else {
-            persistDef = qemuDomainDefCopy(driver, vm->newDef,
-                                           VIR_DOMAIN_XML_SECURE |
-                                           VIR_DOMAIN_XML_MIGRATABLE);
+            if (!(persistDef = qemuMigrationPrepareDef(driver, persist_xml,
+                                                       NULL, NULL)))
+                goto cleanup;
+        } else if (vm->newDef) {
+            if (!(persistDef = qemuDomainDefCopy(driver, vm->newDef,
+                                                 VIR_DOMAIN_XML_SECURE |
+                                                 VIR_DOMAIN_XML_MIGRATABLE)))
+                goto cleanup;
         }
-        if (!persistDef)
-            goto cleanup;
     }
 
     mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen,