fat: use fat_fs_error() instead of BUG_ON() in __fat_get_block()
If file size and FAT cluster chain is not matched (corrupted image), we can hit BUG_ON(!phys) in __fat_get_block(). So, use fat_fs_error() instead. [hirofumi@mail.parknet.co.jp: fix printk warning] Link: http://lkml.kernel.org/r/87po12aq5p.fsf@mail.parknet.co.jp Link: http://lkml.kernel.org/r/874lilcu67.fsf@mail.parknet.co.jp Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Reported-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com> Tested-by: Anatoly Trosinenko <anatoly.trosinenko@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
26b95137d6
commit
c2574aaa5d
|
@ -158,8 +158,14 @@ static inline int __fat_get_block(struct inode *inode, sector_t iblock,
|
|||
err = fat_bmap(inode, iblock, &phys, &mapped_blocks, create, false);
|
||||
if (err)
|
||||
return err;
|
||||
if (!phys) {
|
||||
fat_fs_error(sb,
|
||||
"invalid FAT chain (i_pos %lld, last_block %llu)",
|
||||
MSDOS_I(inode)->i_pos,
|
||||
(unsigned long long)last_block);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
BUG_ON(!phys);
|
||||
BUG_ON(*max_blocks != mapped_blocks);
|
||||
set_buffer_new(bh_result);
|
||||
map_bh(bh_result, sb, phys);
|
||||
|
|
Loading…
Reference in New Issue