projects/linux·commit 97f76d3d

vfs: check bh->b_blocknr only if BH_Mapped is set

97f76d3d · Nikanth Karthikesan <[email protected]> · 2009-04-02 16:56:46 -07:00

Check bh->b_blocknr only if BH_Mapped is set.

akpm: I doubt if b_blocknr is ever uninitialised here, but it could
conceivably cause a problem if we're doing a lookup for block zero.

Signed-off-by: Nikanth Karthikesan <[email protected]>
Cc: Nick Piggin <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
97f76d3d197f201ac8a8a3ced5b8fef81568e50e
Parents
9a896c9a

Changes

1 files changed · +3 −3

FileStatusAddDelContent
fs/buffer.cmodified+3−3View file

fs/buffer.c

View file
diff --git a/fs/buffer.c b/fs/buffer.c
index f5f8b15..2963858 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -199,13 +199,13 @@ __find_get_block_slow(struct block_device *bdev, sector_t block)
head = page_buffers(page);
bh = head;
do {
- if (bh->b_blocknr == block) {
+ if (!buffer_mapped(bh))
+ all_mapped = 0;
+ else if (bh->b_blocknr == block) {
ret = bh;
get_bh(bh);
goto out_unlock;
}
- if (!buffer_mapped(bh))
- all_mapped = 0;
bh = bh->b_this_page;
} while (bh != head);