summaryrefslogtreecommitdiffstats
path: root/fs/ext4/dir.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-12-07 22:35:17 +0100
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-12-07 22:35:17 +0100
commit21b4e736922f546e0f1aa7b9d6c442f309a2444a (patch)
treee1be8645297f8ebe87445251743ebcc52081a20d /fs/ext4/dir.c
parentMerge branch 'master' of /home/trondmy/kernel/linux-2.6/ into merge_linus (diff)
parentAdd "run_scheduled_work()" workqueue function (diff)
downloadlinux-21b4e736922f546e0f1aa7b9d6c442f309a2444a.tar.xz
linux-21b4e736922f546e0f1aa7b9d6c442f309a2444a.zip
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ into merge_linus
Diffstat (limited to 'fs/ext4/dir.c')
-rw-r--r--fs/ext4/dir.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c
index f8595787a70e..f2ed3e7fb9f5 100644
--- a/fs/ext4/dir.c
+++ b/fs/ext4/dir.c
@@ -153,6 +153,9 @@ static int ext4_readdir(struct file * filp,
ext4_error (sb, "ext4_readdir",
"directory #%lu contains a hole at offset %lu",
inode->i_ino, (unsigned long)filp->f_pos);
+ /* corrupt size? Maybe no more blocks to read */
+ if (filp->f_pos > inode->i_blocks << 9)
+ break;
filp->f_pos += sb->s_blocksize - offset;
continue;
}