diff options
author | Eric Sesterhenn <snakebyte@gmx.de> | 2009-01-07 01:43:12 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-07 02:59:31 +0300 |
commit | e1f89ec95bd28b0927e76c46a7cc0927b7521c1d (patch) | |
tree | 7edb722c036ee9aaec0621a25a2e58326c55fffc /fs/bfs/file.c | |
parent | 58c6d3dfe436eb8cfb451981d8fdc9044eaf42da (diff) | |
download | linux-e1f89ec95bd28b0927e76c46a7cc0927b7521c1d.tar.xz |
bfs: add some basic sanity checks
bfs_fill_super() already touches all inodes, so we can easily add some
cheap sanity checks and check if the inode start and end blocks are
smaller than the maximum number of blocks, the inode start block lies
behind the end block or the file end offset is behind the end of the
filesystem. Also check if the start of data offset in the super block
fits the filesystem.
The added sanity checks catch softlockup issues early when we try to
sb_bread() lots of blocks in a loop in bfs_readdir() and bfs_find_entry().
In addition an oom issue in bfs_fill_super() is prevented by this when
s_start is corrupted, which influences imap_len and we try to allocate a
huge info->si_imap.
Signed-off-by: Eric Sesterhenn <snakebyte@gmx.de>
Acked-by: Tigran Aivazian <tigran@aivazian.fsnet.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/bfs/file.c')
0 files changed, 0 insertions, 0 deletions