summaryrefslogtreecommitdiffstats
path: root/0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch
diff options
context:
space:
mode:
authorJustin M. Forbes <jforbes@fedoraproject.org>2020-04-29 09:22:36 -0500
committerJustin M. Forbes <jforbes@fedoraproject.org>2020-04-29 09:22:36 -0500
commit68dd5fcadc5b702c7d1426dea990ff0b55e62f42 (patch)
tree364eb5e0b639e450c9af02fb3575ab0ab333840b /0001-btrfs-fix-memory-leak-of-transaction-when-deleting-u.patch
parent5a34ebde9f6e52bee966789ed3dc196af0724a20 (diff)
downloadkernel-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.patch45
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
+