Patch "Btrfs: fix transaction handle leak on failure to create hard link" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
Btrfs: fix transaction handle leak on failure to create hard link
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
btrfs-fix-transaction-handle-leak-on-failure-to-create-hard-link.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
271dba4521aed0c37c063548f876b49f5cd64b2eMon Sep 17 00:00:00 2001
From: Filipe Manana <[email protected]>
Date: Tue, 5 Jan 2016 16:24:05 +0000
Subject: Btrfs: fix transaction handle leak on failure to create hard link
From: Filipe Manana <[email protected]>
commit 271dba4521aed0c37c063548f876b49f5cd64b2e upstream.
If we failed to create a hard link we were not always releasing the the transaction handle we got before, resulting in a memory leak and preventing any other tasks from being able to commit the current transaction.
Fix this by always releasing our transaction handle.
--- fs/btrfs/inode.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
fs/btrfs/inode.c +4 -2
@@ -6493,7 +6493,7 @@ out_unlock_inode:static int btrfs_link (struct dentry *old_dentry,struct inode *dir,struct dentry *dentry) { -struct btrfs_trans_handle *trans; +struct btrfs_trans_handle *trans =NULL ;struct btrfs_root *root =BTRFS_I (dir)->root;struct inode *inode =d_inode (old_dentry);u64 index;
@@ -6519,6 +6519,7 @@ static int btrfs_link(struct dentry *old trans =btrfs_start_transaction (root,5 );if (IS_ERR (trans)) { err =PTR_ERR (trans); + trans =NULL ; goto fail; }
@@ -6552,9 +6553,10 @@ static int btrfs_link(struct dentry *oldbtrfs_log_new_name (trans, inode,NULL , parent); } -btrfs_end_transaction (trans, root);btrfs_balance_delayed_items (root); fail: +if (trans) +btrfs_end_transaction (trans, root);if (drop_inode) {inode_dec_link_count (inode);iput (inode);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/btrfs-fix-transaction-handle-leak-on-failure-to-create-hard-link.patch queue-4.4/btrfs-fix-number-of-transaction-units-required-to-create-symlink.patch queue-4.4/btrfs-send-don-t-bug_on-when-an-empty-symlink-is-found.patch