diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c index 3f17ef844fb65ad61b373c2b746ae832a53d0aba..4491fcf2a0e60b55ca66d61f222b4a807ca0b385 100644 --- a/fs/reiserfs/journal.c +++ b/fs/reiserfs/journal.c @@ -3925,10 +3925,13 @@ static int do_journal_end(struct reiserfs_transaction_handle *th, flush = 1; } #ifdef REISERFS_PREALLOCATE - /* quota ops might need to nest, setup the journal_info pointer for them */ + /* quota ops might need to nest, setup the journal_info pointer for them + * and raise the refcount so that it is > 0. */ current->journal_info = th; + th->t_refcount++; reiserfs_discard_all_prealloc(th); /* it should not involve new blocks into * the transaction */ + th->t_refcount--; current->journal_info = th->t_handle_save; #endif