Btrfs: don't leak transaction in btrfs_sync_file()
In btrfs_sync_file(), if the call to btrfs_log_dentry_safe() returns a negative error (for e.g. -ENOMEM via btrfs_log_inode()), we would return without ending/freeing the transaction. Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
parent
a724b43690
commit
a0634be562
|
@ -1859,8 +1859,8 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
|
||||||
|
|
||||||
ret = btrfs_log_dentry_safe(trans, root, dentry);
|
ret = btrfs_log_dentry_safe(trans, root, dentry);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
mutex_unlock(&inode->i_mutex);
|
/* Fallthrough and commit/free transaction. */
|
||||||
goto out;
|
ret = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we've logged all the items and now have a consistent
|
/* we've logged all the items and now have a consistent
|
||||||
|
|
Loading…
Reference in New Issue