diff options
author | Jan Kara <jack@suse.cz> | 2008-04-07 23:16:38 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2008-04-17 14:23:17 +0200 |
commit | 4f7874c868eaedd0e64b2f6c800bc852bdc7f38b (patch) | |
tree | b663f87a4740cae9fdbeb09f9ee1a129ee4e618a /fs/udf/super.c | |
parent | 5fb28aa25ab0b71af2e441d68e63ad257e610a04 (diff) | |
download | linux-4f7874c868eaedd0e64b2f6c800bc852bdc7f38b.tar.gz linux-4f7874c868eaedd0e64b2f6c800bc852bdc7f38b.tar.bz2 linux-4f7874c868eaedd0e64b2f6c800bc852bdc7f38b.zip |
udf: Silence warning about accesses beyond end of device
Some of the computed positions of anchor block could be beyond the end of
device. Skip reading such blocks.
Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf/super.c')
-rw-r--r-- | fs/udf/super.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/udf/super.c b/fs/udf/super.c index b9e719de0704..28ed3f5ebd70 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -688,8 +688,12 @@ static int udf_check_anchor_block(struct super_block *sb, sector_t block, uint16_t ident; uint32_t location; - if (varconv) + if (varconv) { + if (udf_fixed_to_variable(block) >= + sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits) + return 0; bh = sb_bread(sb, udf_fixed_to_variable(block)); + } else bh = sb_bread(sb, block); |