--- ../download/linux-2.6.29-rc2-vanilla/fs/ext4/extents.c 2009-02-05 12:31:19.000000000 +0100 +++ fs/ext4/extents.c 2009-02-05 12:42:49.000000000 +0100 @@ -595,8 +595,15 @@ /* find extent */ ext4_ext_binsearch(inode, path + ppos, block); /* if not an empty leaf */ - if (path[ppos].p_ext) + if (path[ppos].p_ext) { path[ppos].p_block = ext_pblock(path[ppos].p_ext); + if (path[ppos].p_block < EXT4_SB(inode->i_sb)->s_es->s_first_data_block + || path[ppos].p_block + path[ppos].p_ext->ee_len + >= ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es)) { + printk("ext4_ext_find_extent: extent out of range\n"); + goto err; + } + } ext4_ext_show_path(inode, path);