diff options
author | Justin M. Forbes <jforbes@fedoraproject.org> | 2020-04-29 09:22:36 -0500 |
---|---|---|
committer | Justin M. Forbes <jforbes@fedoraproject.org> | 2020-04-29 09:22:36 -0500 |
commit | 68dd5fcadc5b702c7d1426dea990ff0b55e62f42 (patch) | |
tree | 364eb5e0b639e450c9af02fb3575ab0ab333840b /0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch | |
parent | 5a34ebde9f6e52bee966789ed3dc196af0724a20 (diff) | |
download | kernel-68dd5fcadc5b702c7d1426dea990ff0b55e62f42.tar.gz kernel-68dd5fcadc5b702c7d1426dea990ff0b55e62f42.tar.xz kernel-68dd5fcadc5b702c7d1426dea990ff0b55e62f42.zip |
* Wed Apr 29 2020 Justin M. Forbes <jforbes@fedoraproject.org> 5.7.0-0.rc3.20200428git51184ae37e05.1
- 51184ae37e05 rebase
Resolves: rhbz#
Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
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 + |