diff options
author | Jan Kara <jack@suse.cz> | 2011-05-05 13:59:35 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2011-05-17 13:47:42 +0200 |
commit | 2842bb20eed2e25cde5114298edc62c8883a1d9a (patch) | |
tree | af4d60d1e5e922f836ec5de3bc6f433fbb947ef2 /security/apparmor/context.c | |
parent | 4e299c1d9113b5c1c3845c0d4e78d09dd60a4fe8 (diff) | |
download | blackbird-op-linux-2842bb20eed2e25cde5114298edc62c8883a1d9a.tar.gz blackbird-op-linux-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: stable@kernel.org
Reported-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'security/apparmor/context.c')
0 files changed, 0 insertions, 0 deletions