diff options
| author | Andrew Morton <akpm@osdl.org> | 2003-07-02 08:50:04 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-07-02 08:50:04 -0700 |
| commit | 90153a16f179e04f2f58c9e4e428b669f2282178 (patch) | |
| tree | be3c9525cdd66061872e9afc991fc29ef7c4fda3 /include/linux | |
| parent | 610a61e01f5fd6e1b9e8d8e2f4905d24c7875aa5 (diff) | |
[PATCH] ext3: fix journal_release_buffer() race
CPU0 CPU1
journal_get_write_access(bh)
(Add buffer to t_reserved_list)
journal_get_write_access(bh)
(It's already on t_reserved_list:
nothing to do)
(We decide we don't want to
journal the buffer after all)
journal_release_buffer()
(It gets pulled off the transaction)
journal_dirty_metadata()
(The buffer isn't on the reserved
list! The kernel explodes)
Simple fix: just leave the buffer on t_reserved_list in
journal_release_buffer(). If nobody ends up claiming the buffer then it will
get thrown away at start of transaction commit.
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions
