Btrfs: fix memory leak in btrfs_ioctl_start_sync()
PATCH 1/1 Btrfs: fix memory leak in btrfs_ioctl_start_sync()
Free btrfs_trans_handle if btrfs_commit_transaction_async() fails.
Signed-off-by Tsutomu Itoh <[email protected]>
--- fs/btrfs/ioctl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/btrfs/ioctl.c +3 -1
@@ -2436,8 +2436,10 @@ static noinline long btrfs_ioctl_start_sreturn PTR_ERR (trans); transid = trans->transid; ret =btrfs_commit_transaction_async (trans, root,0 ); -if (ret) +if (ret) { +kmem_cache_free (btrfs_trans_handle_cachep, trans);return ret; + }if (argp)if (copy_to_user (argp, &transid,sizeof (transid)))
Sorry. Ignore previous patch.
New patch is as follows.
Thanks,
Tsutomu
Quoted 13 lines · Tsutomu Itoh
Free
btrfs_trans_handleifbtrfs_commit_transaction_async()fails.Signed-off-by Tsutomu Itoh <[email protected]>--- fs/btrfs/ioctl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)diff -urNp
linux-2.6.39-rc1/fs/btrfs/ioctl.clinux-2.6.39-rc1.new/fs/btrfs/ioctl.cfs/btrfs/ioctl.c +0
-0@@ -2436,8 +2436,10 @@ static noinline long btrfs_ioctl_start_sreturn PTR_ERR (trans);
fs/btrfs/ioctl.c static noinline long btrfs_ioctl_start_s · line 2445
Quoted 10 lines
fs/btrfs/ioctl.c +3
-1transid = trans->transid; ret =btrfs_commit_transaction_async (trans, root,0 ); -if (ret) +if (ret) { +kmem_cache_free (btrfs_trans_handle_cachep, trans);return ret; + }if (argp)if (copy_to_user (argp, &transid,sizeof (transid)))
Call btrfs_end_transaction() if btrfs_commit_transaction_async() fails.
Signed-off-by Tsutomu Itoh <[email protected]>
--- fs/btrfs/ioctl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/btrfs/ioctl.c +3 -1
@@ -2436,8 +2436,10 @@ static noinline long btrfs_ioctl_start_sreturn PTR_ERR (trans); transid = trans->transid; ret =btrfs_commit_transaction_async (trans, root,0 ); -if (ret) +if (ret) { +btrfs_end_transaction (trans, root);return ret; + }if (argp)if (copy_to_user (argp, &transid,sizeof (transid)))