summaryrefslogtreecommitdiffstats
path: root/net/sunrpc
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2009-06-10 01:26:26 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-10 01:59:03 +0200
commita61d90d75d0f9e86432c45b496b4b0fbf0fd03dc (patch)
tree85d557e9d67cbad0347c6f12f7a60c474e485f7c /net/sunrpc
parentautofs4: remove hashed check in validate_wait() (diff)
downloadlinux-a61d90d75d0f9e86432c45b496b4b0fbf0fd03dc.tar.xz
linux-a61d90d75d0f9e86432c45b496b4b0fbf0fd03dc.zip
jbd: fix race in buffer processing in commit code
In commit code, we scan buffers attached to a transaction. During this scan, we sometimes have to drop j_list_lock and then we recheck whether the journal buffer head didn't get freed by journal_try_to_free_buffers(). But checking for buffer_jbd(bh) isn't enough because a new journal head could get attached to our buffer head. So add a check whether the journal head remained the same and whether it's still at the same transaction and list. This is a nasty bug and can cause problems like memory corruption (use after free) or trigger various assertions in JBD code (observed). Signed-off-by: Jan Kara <jack@suse.cz> Cc: <stable@kernel.org> Cc: <linux-ext4@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net/sunrpc')
0 files changed, 0 insertions, 0 deletions