diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-04-29 16:33:44 +0200 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-04-29 16:33:44 +0200 |
commit | 0c9c09e2873354ef28a3b5a74acd8884292e6fc4 (patch) | |
tree | 49fea2bb89fee2d6afa95b70753db38535e9f4eb /0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch | |
parent | b882163f98fbb3dcc9ff5d494827ea4abbaf7a12 (diff) | |
parent | 68dd5fcadc5b702c7d1426dea990ff0b55e62f42 (diff) | |
download | kernel-0c9c09e2873354ef28a3b5a74acd8884292e6fc4.tar.gz kernel-0c9c09e2873354ef28a3b5a74acd8884292e6fc4.tar.xz kernel-0c9c09e2873354ef28a3b5a74acd8884292e6fc4.zip |
Merge remote-tracking branch 'origin/master' into rawhide-user-thl-vanilla-fedora
Diffstat (limited to '0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch')
-rw-r--r-- | 0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch b/0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch new file mode 100644 index 000000000..5b9bd2cc1 --- /dev/null +++ b/0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch @@ -0,0 +1,45 @@ +From 5150bf19635c335109542c19f6b84c7813810873 Mon Sep 17 00:00:00 2001 +From: Filipe Manana <fdmanana@suse.com> +Date: Fri, 17 Apr 2020 16:36:15 +0100 +Subject: [PATCH] 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 | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c +index 47f66c6a7d7f..af9e9a008724 100644 +--- a/fs/btrfs/block-group.c ++++ b/fs/btrfs/block-group.c +@@ -1288,11 +1288,15 @@ static bool clean_pinned_extents(struct btrfs_trans_handle *trans, + if (ret) + goto err; + mutex_unlock(&fs_info->unused_bg_unpin_mutex); ++ if (prev_trans) ++ btrfs_put_transaction(prev_trans); + + return true; + + err: + mutex_unlock(&fs_info->unused_bg_unpin_mutex); ++ if (prev_trans) ++ btrfs_put_transaction(prev_trans); + btrfs_dec_block_group_ro(bg); + return false; + } +-- +2.26.2 + |