}
 
        if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
-               loc = le32_to_cpu(((__le32 *)iinfo->i_ext.i_data)[block]);
+               loc = le32_to_cpu(((__le32 *)(iinfo->i_ext.i_data +
+                       vdata->s_start_offset))[block]);
                goto translate;
        }
        index = (sb->s_blocksize - vdata->s_start_offset) / sizeof(uint32_t);
 
                return 1;
 
        if (map->s_partition_type == UDF_VIRTUAL_MAP15) {
-               map->s_type_specific.s_virtual.s_start_offset =
-                       udf_ext0_offset(sbi->s_vat_inode);
+               map->s_type_specific.s_virtual.s_start_offset = 0;
                map->s_type_specific.s_virtual.s_num_entries =
                        (sbi->s_vat_inode->i_size - 36) >> 2;
        } else if (map->s_partition_type == UDF_VIRTUAL_MAP20) {
                }
 
                map->s_type_specific.s_virtual.s_start_offset =
-                       le16_to_cpu(vat20->lengthHeader) +
-                       udf_ext0_offset(sbi->s_vat_inode);
+                       le16_to_cpu(vat20->lengthHeader);
                map->s_type_specific.s_virtual.s_num_entries =
                        (sbi->s_vat_inode->i_size -
                                map->s_type_specific.s_virtual.