Re: [PATCH] btrfs: fix a memory leak issue in read_one_chunk()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





在 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;






[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux