aboutsummaryrefslogtreecommitdiffstats
path: root/fs/jbd2/commit.c
diff options
context:
space:
mode:
authorJan Kara <[email protected]>2011-05-05 11:59:35 +0000
committerJan Kara <[email protected]>2011-05-17 11:47:42 +0000
commit2842bb20eed2e25cde5114298edc62c8883a1d9a (patch)
treeaf4d60d1e5e922f836ec5de3bc6f433fbb947ef2 /fs/jbd2/commit.c
parentext2: fix error msg when mounting fs with too-large blocksize (diff)
downloadkernel-2842bb20eed2e25cde5114298edc62c8883a1d9a.tar.gz
kernel-2842bb20eed2e25cde5114298edc62c8883a1d9a.zip
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: [email protected] Reported-by: Tao Ma <[email protected]> Signed-off-by: Jan Kara <[email protected]>
Diffstat (limited to 'fs/jbd2/commit.c')
0 files changed, 0 insertions, 0 deletions