diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index f6ae76815e4b568e172048f0cd2ddc93abd8a2c2..6f8dcf59b5257382ab5eb9befcad597f8c1f3081 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -7151,6 +7151,7 @@ static int read_one_chunk(struct btrfs_key *key, struct extent_buffer *leaf,
 		btrfs_err(fs_info,
 			  "failed to add chunk map, start=%llu len=%llu: %d",
 			  map->start, map->chunk_len, ret);
+		btrfs_free_chunk_map(map);
 	}
 
 	return ret;