summaryrefslogtreecommitdiffstats
path: root/fs/jbd2/commit.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2011-05-05 13:59:35 +0200
committerJan Kara <jack@suse.cz>2011-05-17 13:47:42 +0200
commit2842bb20eed2e25cde5114298edc62c8883a1d9a (patch)
treeaf4d60d1e5e922f836ec5de3bc6f433fbb947ef2 /fs/jbd2/commit.c
parent4e299c1d9113b5c1c3845c0d4e78d09dd60a4fe8 (diff)
downloadlinux-2842bb20eed2e25cde5114298edc62c8883a1d9a.tar.bz2
jbd: Fix forever sleeping process in do_get_write_access()
In do_get_write_access() we wait on BH_Unshadow bit for buffer to get from shadow state. The waking code in journal_commit_transaction() has a bug because it does not issue a memory barrier after the buffer is moved from the shadow state and before wake_up_bit() is called. Thus a waitqueue check can happen before the buffer is actually moved from the shadow state and waiting process may never be woken. Fix the problem by issuing proper barrier. CC: stable@kernel.org Reported-by: Tao Ma <boyu.mt@taobao.com> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/jbd2/commit.c')
0 files changed, 0 insertions, 0 deletions