On Wed, 18 Mar 2015, Taesoo Kim wrote: > Date: Wed, 18 Mar 2015 13:39:31 -0400 > From: Taesoo Kim <taesoo@xxxxxxxxxx> > To: Lukáš Czerner <lczerner@xxxxxxxxxx> > Cc: Taesoo Kim <tsgatesv@xxxxxxxxx>, tytso@xxxxxxx, > linux-ext4@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, > changwoo@xxxxxxxxxx, sanidhya@xxxxxxxxxx, blee@xxxxxxxxxx, > csong84@xxxxxxxxxx > Subject: Re: [PATCH 1/1] jbd2: fix incorrect unlock on j_list_lock > > > The patch looks good, thanks. > > Thank you. > > > Reviewed-by: Lukas Czerner <lczerner@xxxxxxxxxx> > > > > Btw, were you able to reproduce the problem, or have you seen the > > problem in the wild ? Or did you just spot it in the code ? > > We are developing a static checker to spot inconsistent programming > patterns; our first goal is to scan over existing filesystems and > figure out how they are implemented differently (or similarly). We > will report bugs in sequence as soon as our team confirm (just start > sending patches to other fs). And this was found but it ? But anyway it sounds really interesting, do you have any more information you can share about the project ? Project website, description, or source code would be great :) Thanks! -Lukas > > Thanks, > Taesoo > > > Thanks! > > -Lukas > > > > > > > > Signed-off-by: Taesoo Kim <tsgatesv@xxxxxxxxx> > > > --- > > > 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 5f09370..edb7f59 100644 > > > --- a/fs/jbd2/transaction.c > > > +++ b/fs/jbd2/transaction.c > > > @@ -1091,6 +1091,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; > > > @@ -1098,8 +1099,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); > > > > > > /* > > > -- > > > 2.3.3 > > > > > > -- > > > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > >