在 2025/3/3 13:12, Haoxiang Li 写道:
Add btrfs_free_chunk_map() to free the memory allocated by btrfs_alloc_chunk_map() if btrfs_add_chunk_map() fails. Fixes: 7dc66abb5a47 ("btrfs: use a dedicated data structure for chunk maps") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Haoxiang Li <haoxiang_li2024@xxxxxxx>
Reviewed-by: Qu Wenruo <wqu@xxxxxxxx> And the fixes tag is also correct, before that commit, add_extent_map() will increase the ref if tree_insert() succeeded, thus if it failed the unconditional free_extent_map() will just free the no longer utilized em. But at that commit, we no longer has that feature, thus has to manually cleanup the map. Thanks, Qu
--- fs/btrfs/volumes.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index fb22d4425cb0..3f8afbd1ebb5 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -7155,6 +7155,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;