summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2005-08-01 21:11:41 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-08-01 21:38:00 -0700
commit74f9c9c258249fba3e2e78f70691528426a6c010 (patch)
tree1a334bf40020b2db5ed07a218a7830a427f74b93 /fs
parentf76d28d235cf777dd2e1c1d48c16ee10c1d1587f (diff)
downloadlwn-74f9c9c258249fba3e2e78f70691528426a6c010.tar.gz
lwn-74f9c9c258249fba3e2e78f70691528426a6c010.zip
[PATCH] hfs: don't reference missing page
If there was a read error, the bnode might miss some pages, so skip them. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/hfs/bnode.c2
-rw-r--r--fs/hfsplus/bnode.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/fs/hfs/bnode.c b/fs/hfs/bnode.c
index 6ad1211f84ed..a096c5a56664 100644
--- a/fs/hfs/bnode.c
+++ b/fs/hfs/bnode.c
@@ -480,6 +480,8 @@ void hfs_bnode_put(struct hfs_bnode *node)
return;
}
for (i = 0; i < tree->pages_per_bnode; i++) {
+ if (!node->page[i])
+ continue;
mark_page_accessed(node->page[i]);
#if REF_PAGES
put_page(node->page[i]);
diff --git a/fs/hfsplus/bnode.c b/fs/hfsplus/bnode.c
index 267872e84d71..8868d3b766fd 100644
--- a/fs/hfsplus/bnode.c
+++ b/fs/hfsplus/bnode.c
@@ -643,6 +643,8 @@ void hfs_bnode_put(struct hfs_bnode *node)
return;
}
for (i = 0; i < tree->pages_per_bnode; i++) {
+ if (!node->page[i])
+ continue;
mark_page_accessed(node->page[i]);
#if REF_PAGES
put_page(node->page[i]);