Thiemo Nagel wrote:
Based on 2.6.29-rc7 with Aneesh Kumar's patches: ext4: Validate extent details only when read from the disk ext4: Add checks to validate extent entries Sets need_to_validate=0 inside instead of outside the loop.
OTOH, why not remove the variable altogether? (cf. attached patch) Kind regards, Signed-off-by: Thiemo Nagel <thiemo.nagel@xxxxxxxxx> -- +-----------------------------------+--------------------------+ | Dipl.-Phys. Thiemo Nagel | | | Technische Universitaet Muenchen | Room PH1 3276 | | Physik-Department E18 | | | James-Franck-Strasse | Phone +49 89 289-12379 | | D-85747 Garching | Fax +49 89 289-12570 | +-----------------------------------+--------------------------+
--- linux-2.6.29-rc8/fs/ext4/extents.c~ 2009-03-16 19:37:22.000000000 +0100 +++ linux-2.6.29-rc8/fs/ext4/extents.c 2009-03-16 19:50:33.000000000 +0100 @@ -607,7 +607,6 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block, struct ext4_ext_path *path) { - int need_to_validate = 0; struct ext4_extent_header *eh; struct buffer_head *bh; short int depth, i, ppos = 0, alloc = 0; @@ -646,17 +645,16 @@ goto err; } /* validate the extent entries */ - need_to_validate = 1; + if (ext4_ext_check(inode, eh, i)) + goto err; } + eh = ext_block_hdr(bh); ppos++; BUG_ON(ppos > depth); path[ppos].p_bh = bh; path[ppos].p_hdr = eh; i--; - - if (need_to_validate && ext4_ext_check(inode, eh, i)) - goto err; } path[ppos].p_depth = i;