btrfs: fix memory leak of transaction when deleting unused block group
authorFilipe Manana <fdmanana@suse.com>
Fri, 17 Apr 2020 15:36:15 +0000 (16:36 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 23 Apr 2020 15:22:45 +0000 (17:22 +0200)
commit5150bf19635c335109542c19f6b84c7813810873
treef29a3e395db020268f0a040e2c4ac22faedb827a
parent317ddf3715cd4083e0e5914c17e897e72e779445
btrfs: fix memory leak of transaction when deleting unused block group

When cleaning pinned extents right before deleting an unused block group,
we check if there's still a previous transaction running and if so we
increment its reference count before using it for cleaning pinned ranges
in its pinned extents iotree. However we ended up never decrementing the
reference count after using the transaction, resulting in a memory leak.

Fix it by decrementing the reference count.

Fixes: fe119a6eeb6705 ("btrfs: switch to per-transaction pinned extents")
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/block-group.c