diff mbox series

btrfs: fix bitmap leak when loading free space cache on duplicate entry

Message ID 548b562c2432cbc591b50fad1ea24ae87dd50627.1720017904.git.fdmanana@suse.com (mailing list archive)
State New
Headers show
Series btrfs: fix bitmap leak when loading free space cache on duplicate entry | expand

Commit Message

Filipe Manana July 3, 2024, 2:45 p.m. UTC
From: Filipe Manana <fdmanana@suse.com>

If we failed to link a free space entry because there's already a
conflicting entry for the same offset, we free the free space entry but
we don't free the associated bitmap that we had just allocated before.
Fix that by freeing the bitmap before freeing the entry.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/free-space-cache.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Johannes Thumshirn July 3, 2024, 3:32 p.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
David Sterba July 3, 2024, 11:26 p.m. UTC | #2
On Wed, Jul 03, 2024 at 03:45:45PM +0100, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> If we failed to link a free space entry because there's already a
> conflicting entry for the same offset, we free the free space entry but
> we don't free the associated bitmap that we had just allocated before.
> Fix that by freeing the bitmap before freeing the entry.
> 
> Signed-off-by: Filipe Manana <fdmanana@suse.com>

Reviewed-by: David Sterba <dsterba@suse.com>
diff mbox series

Patch

diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index dabc3d0793cf..5007dabc45d3 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -858,6 +858,7 @@  static int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
 				spin_unlock(&ctl->tree_lock);
 				btrfs_err(fs_info,
 					"Duplicate entries in free space cache, dumping");
+				kmem_cache_free(btrfs_free_space_bitmap_cachep, e->bitmap);
 				kmem_cache_free(btrfs_free_space_cachep, e);
 				goto free_cache;
 			}