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