Fix floating point precision error in e2fsck. Commit 641b66bc7ee0a880b0eb0125dff5f8ed8dd5a160 fixed a floating point precision error which can result in a search algorithm looping forever. It can also result in an array index being out of bounds and causing a segfault. Here are two more cases that need to be fixed. I've just used the same fix from the that commit. diff -up e2fsprogs-1.39/e2fsck/ea_refcount.c.orig e2fsprogs-1.39/e2fsck/ea_refcount.c --- e2fsprogs-1.39/e2fsck/ea_refcount.c.orig 2010-06-30 11:14:51.516239079 +1000 +++ e2fsprogs-1.39/e2fsck/ea_refcount.c 2010-06-30 11:22:22.277362222 +1000 @@ -193,9 +193,14 @@ retry: range = 0; else if (blk > highval) range = 1; - else + else { range = ((float) (blk - lowval)) / (highval - lowval); + if (range > 0.9) + range = 0.9; + if (range < 0.1) + range = 0.1; + } mid = low + ((int) (range * (high-low))); } #endif diff -up e2fsprogs-1.39/resize/extent.c.orig e2fsprogs-1.39/resize/extent.c --- e2fsprogs-1.39/resize/extent.c.orig 2010-06-30 11:25:58.969188333 +1000 +++ e2fsprogs-1.39/resize/extent.c 2010-06-30 11:26:40.449327216 +1000 @@ -167,9 +167,14 @@ __u32 ext2fs_extent_translate(ext2_exten range = 0; else if (old_loc > highval) range = 1; - else + else { range = ((float) (old_loc - lowval)) / (highval - lowval); + if (range > 0.9) + range = 0.9; + if (range < 0.1) + range = 0.1; + } mid = low + ((int) (range * (high-low))); } #endif Lachlan -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html