jbd: fix race between write_metadata_buffer and get_write_access
authordingdinghua <dingdinghua85@gmail.com>
Wed, 15 Jul 2009 19:42:05 +0000 (21:42 +0200)
committerJan Kara <jack@suse.cz>
Tue, 21 Jul 2009 09:54:42 +0000 (11:54 +0200)
commitf1015c447781729060c415f5133164c638561f25
tree3fb03db8dc97bf9037cbdf91b71e28a2bbb8eed3
parent43237b5490e8f2f4679decd660064ff35ce490cc
jbd: fix race between write_metadata_buffer and get_write_access

The function journal_write_metadata_buffer() calls jbd_unlock_bh_state(bh_in)
too early; this could potentially allow another thread to call get_write_access
on the buffer head, modify the data, and dirty it, and allowing the wrong data
to be written into the journal.  Fortunately, if we lose this race, the only
time this will actually cause filesystem corruption is if there is a system
crash or other unclean shutdown of the system before the next commit can take
place.

Signed-off-by: dingdinghua <dingdinghua85@gmail.com>
Acked-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/jbd/journal.c