diff options
author | Evgeniy Dushistov <dushistov@mail.ru> | 2006-02-03 06:04:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-03 11:32:04 -0500 |
commit | 09114eb8c53d2d3b2ff9523e011cb68b2e245dce (patch) | |
tree | c66d4590814072f91d74f185c798a3935d933209 /fs/dcache.c | |
parent | e295cfcb2907ae4c5df57f5d4ada1ce6f3ae4657 (diff) |
[PATCH] ufs: fix hang during `rm'
This fixes the code like this:
bh = sb_find_get_block (sb, tmp + j);
if ((bh && DATA_BUFFER_USED(bh)) || tmp != fs32_to_cpu(sb, *p)) {
retry = 1;
brelse (bh);
goto next1;
}
bforget (bh);
sb_find_get_block() ordinarily returns a buffer_head with b_count>=2, and
this code assume that in case if "b_count>1" buffer is used, so this caused
infinite loop.
(akpm: that is-the-buffer-busy code is incomprehensible. Good riddance. Use
of block_truncate_page() seems sane).
Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/dcache.c')
0 files changed, 0 insertions, 0 deletions