The commit is pushed to "branch-rh7-3.10.0-514.10.2.vz7.29.x-ovz" and will 
appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-514.10.2.vz7.29.3
------>
commit 0672ec203b2c812f45694f2cc0a5121adf2ca4ec
Author: Taesoo Kim <[email protected]>
Date:   Thu Mar 16 15:42:20 2017 +0400

    ms/jbd2: fix incorrect unlock on j_list_lock
    
    When 'jh->b_transaction == transaction' (asserted by below)
    
      J_ASSERT_JH(jh, (jh->b_transaction == transaction || ...
    
    'journal->j_list_lock' will be incorrectly unlocked, since
    the the lock is aquired only at the end of if / else-if
    statements (missing the else case).
    
    Signed-off-by: Taesoo Kim <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Reviewed-by: Andreas Dilger <[email protected]>
    Fixes: 6e4862a5bb9d12be87e4ea5d9a60836ebed71d28
    Cc: [email protected] # 3.14+
    
    ms commit: 559cce6 ("jbd2: fix incorrect unlock on j_list_lock")
    
    Signed-off-by: Anatoly Stepanov <[email protected]>
---
 fs/jbd2/transaction.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
index b249f40..ed52bf7 100644
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
@@ -1106,6 +1106,7 @@ int jbd2_journal_get_create_access(handle_t *handle, 
struct buffer_head *bh)
                JBUFFER_TRACE(jh, "file as BJ_Reserved");
                spin_lock(&journal->j_list_lock);
                __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved);
+               spin_unlock(&journal->j_list_lock);
        } else if (jh->b_transaction == journal->j_committing_transaction) {
                /* first access by this transaction */
                jh->b_modified = 0;
@@ -1113,8 +1114,8 @@ int jbd2_journal_get_create_access(handle_t *handle, 
struct buffer_head *bh)
                JBUFFER_TRACE(jh, "set next transaction");
                spin_lock(&journal->j_list_lock);
                jh->b_next_transaction = transaction;
+               spin_unlock(&journal->j_list_lock);
        }
-       spin_unlock(&journal->j_list_lock);
        jbd_unlock_bh_state(bh);
 
        /*
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to