|
@@ -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);
|