summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2017-03-12 08:17:19 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-03-12 08:17:19 +0000
commit438bedf5bf1b4ec49332cffc8b7cda1e909b4c82 (patch)
treef95911533e62bf3d06a4a1a0ff1a1f319d393fcb /fs
parentcd5e303ecd1b4d803f35c01633c6eb46457e7520 (diff)
parent973f40f368f72e868af1799b656deeed89be021c (diff)
jbd2: don't leak modified metadata buffers on an aborted journal
am: 973f40f368 Change-Id: I3c95a6a0e9d2daa4713da89a47c3aac6b6193d02
Diffstat (limited to 'fs')
-rw-r--r--fs/jbd2/transaction.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
index fa1b8e0dcacf..a2e724053919 100644
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
@@ -1876,7 +1876,9 @@ static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh)
__blist_del_buffer(list, jh);
jh->b_jlist = BJ_None;
- if (test_clear_buffer_jbddirty(bh))
+ if (transaction && is_journal_aborted(transaction->t_journal))
+ clear_buffer_jbddirty(bh);
+ else if (test_clear_buffer_jbddirty(bh))
mark_buffer_dirty(bh); /* Expose it to the VM */
}