Message ID | 20250303024233.3865292-1-haoxiang_li2024@163.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | btrfs: fix a memory leak issue in read_one_chunk() | expand |
在 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@vger.kernel.org > Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com> Reviewed-by: Qu Wenruo <wqu@suse.com> 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;
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;
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@vger.kernel.org Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com> --- fs/btrfs/volumes.c | 1 + 1 file changed, 1 insertion(+)