OpenCloudOS-Kernel/fs/jbd
Jan Kara 25389bb207 jbd: Fix lock ordering bug in journal_unmap_buffer()
Commit 09e05d48 introduced a wait for transaction commit into
journal_unmap_buffer() in the case we are truncating a buffer undergoing commit
in the page stradding i_size on a filesystem with blocksize < pagesize. Sadly
we forgot to drop buffer lock before waiting for transaction commit and thus
deadlock is possible when kjournald wants to lock the buffer.

Fix the problem by dropping the buffer lock before waiting for transaction
commit. Since we are still holding page lock (and that is OK), buffer cannot
disappear under us.

CC: stable@vger.kernel.org # Wherever commit 09e05d48 was taken
Signed-off-by: Jan Kara <jack@suse.cz>
2012-11-23 15:17:18 +01:00
..
Kconfig Revert "task_struct: make journal_info conditional" 2009-12-17 13:23:24 -08:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
checkpoint.c jbd: Write journal superblock with WRITE_FUA after checkpointing 2012-05-15 23:34:37 +02:00
commit.c jbd: Fix assertion failure in commit code due to lacking transaction credits 2012-09-12 15:52:03 +02:00
journal.c jbd: don't write superblock when unmounting an ro filesystem 2012-08-15 13:53:30 +02:00
recovery.c jbd: Check return value of blkdev_issue_flush() 2012-07-09 23:38:36 +02:00
revoke.c jbd: clear revoked flag on buffers before a new transaction started 2011-11-22 01:20:53 +01:00
transaction.c jbd: Fix lock ordering bug in journal_unmap_buffer() 2012-11-23 15:17:18 +01:00