From: Sage Weil Date: Fri, 10 Jun 2011 18:43:13 +0000 (+0000) Subject: Btrfs: clear current->journal_info on async transaction commit X-Git-Tag: v3.0-rc3~9^2~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38e880540f983045da7a00fbc50daad238207fc5;p=profile%2Fcommon%2Fkernel-common.git Btrfs: clear current->journal_info on async transaction commit Normally current->jouranl_info is cleared by commit_transaction. For an async snap or subvol creation, though, it runs in a work queue. Clear it in btrfs_commit_transaction_async() to avoid leaking a non-NULL journal_info when we return to userspace. When the actual commit runs in the other thread it won't care that it's current->journal_info is already NULL. Signed-off-by: Sage Weil Tested-by: Jim Schutt Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 6b2e478..2b3590b 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -1118,8 +1118,11 @@ int btrfs_commit_transaction_async(struct btrfs_trans_handle *trans, wait_current_trans_commit_start_and_unblock(root, cur_trans); else wait_current_trans_commit_start(root, cur_trans); - put_transaction(cur_trans); + if (current->journal_info == trans) + current->journal_info = NULL; + + put_transaction(cur_trans); return 0; }