diff --git a/migration/migration.c b/migration/migration.c
index f696e22faba36c2f578ef1c8eb29c4439cd697da..87a9b59f83f4677308ab184ad56f922c19a4a2b9 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3061,6 +3061,8 @@ static void migration_completion(MigrationState *s)
 
         qemu_savevm_state_complete_postcopy(s->to_dst_file);
         trace_migration_completion_postcopy_end_after_complete();
+    } else if (s->state == MIGRATION_STATUS_CANCELLING) {
+        goto fail;
     }
 
     /*