summaryrefslogtreecommitdiffstats
path: root/drivers/net/irda/smsc-ircc2.c
diff options
context:
space:
mode:
authorJan Kara2005-09-07 00:19:17 +0200
committerLinus Torvalds2005-09-08 01:57:57 +0200
commit4407c2b6b297339e296facf62e020cf66e55053d (patch)
tree485d60b1cb5c6013d09a0327355e216b202bd8ed /drivers/net/irda/smsc-ircc2.c
parent[PATCH] Change HFS+ to not use ll_rw_block() (diff)
downloadkernel-qcow2-linux-4407c2b6b297339e296facf62e020cf66e55053d.tar.gz
kernel-qcow2-linux-4407c2b6b297339e296facf62e020cf66e55053d.tar.xz
kernel-qcow2-linux-4407c2b6b297339e296facf62e020cf66e55053d.zip
[PATCH] Fix race in do_get_write_access()
attached patch should fix the following race: Proc 1 Proc 2 __flush_batch() ll_rw_block() do_get_write_access() lock_buffer jh is only waiting for checkpoint -> b_transaction == NULL -> do nothing unlock_buffer test_set_buffer_locked() test_clear_buffer_dirty() __journal_file_buffer() change the data submit_bh() and we have sent wrong data to disk... We now clean the dirty buffer flag under buffer lock in all cases and hence we know that whenever a buffer is starting to be journaled we either finish the pending write-out before attaching a buffer to a transaction or we won't write the buffer until the transaction is going to be committed. The test in jbd_unexpected_dirty_buffer() is redundant - remove it. Furthermore we have to clear the buffer dirty bit under the buffer lock to prevent races with buffer write-out (and hence prevent returning a buffer with IO happening). Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/net/irda/smsc-ircc2.c')
0 files changed, 0 insertions, 0 deletions