summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoern Engel <joern@logfs.org>2010-05-01 17:33:06 +0200
committerJoern Engel <joern@logfs.org>2010-05-01 18:02:30 +0200
commitbd2b3f29594c50d7c5bd864d9af05d440394ee82 (patch)
tree1e8e49fe9d346d7ca869dc6e5954195be0e94123
parentad342631f13d40aa787b9e5aaf4800f10d6c3647 (diff)
downloadlinux-bd2b3f29594c50d7c5bd864d9af05d440394ee82.tar.gz
linux-bd2b3f29594c50d7c5bd864d9af05d440394ee82.tar.bz2
linux-bd2b3f29594c50d7c5bd864d9af05d440394ee82.zip
logfs: fix logfs_seek_hole()
logfs_seek_hole(inode, 0x200) would crap itself if the inode contained just 0x1ff (or fewer) blocks. Signed-off-by: Joern Engel <joern@logfs.org>
-rw-r--r--fs/logfs/readwrite.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/logfs/readwrite.c b/fs/logfs/readwrite.c
index 8c663a55b726..e37cee3b1007 100644
--- a/fs/logfs/readwrite.c
+++ b/fs/logfs/readwrite.c
@@ -892,6 +892,8 @@ u64 logfs_seek_hole(struct inode *inode, u64 bix)
return bix;
else if (li->li_data[INDIRECT_INDEX] & LOGFS_FULLY_POPULATED)
bix = maxbix(li->li_height);
+ else if (bix >= maxbix(li->li_height))
+ return bix;
else {
bix = seek_holedata_loop(inode, bix, 0);
if (bix < maxbix(li->li_height))