diff --git a/contrib/pg_upgrade/relfilenode.c b/contrib/pg_upgrade/relfilenode.c
index 70753f233dcb101aa99afae0c628cd915640630c..423802bd2392bd3e38ff05167b612a812938cdc2 100644
--- a/contrib/pg_upgrade/relfilenode.c
+++ b/contrib/pg_upgrade/relfilenode.c
@@ -110,10 +110,8 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
 			pg_fatal("old database \"%s\" not found in the new cluster\n",
 					 old_db->db_name);
 
-		n_maps = 0;
 		mappings = gen_db_file_maps(old_db, new_db, &n_maps, old_pgdata,
 									new_pgdata);
-
 		if (n_maps)
 		{
 			print_maps(mappings, n_maps, new_db->db_name);
@@ -123,9 +121,9 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
 #endif
 			transfer_single_new_db(pageConverter, mappings, n_maps,
 								   old_tablespace);
-
-			pg_free(mappings);
 		}
+		/* We allocate something even for n_maps == 0 */
+		pg_free(mappings);
 	}
 
 	return;