From: Dmitry Monakhov Variable "free" was declarated as __u64 so conidition (free < 0) always false, even if free was overflowed during substraction. Singed-off-by: Mingming Cao Signed-off-by: Dmitry Monakhov --- fs/ext4/balloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-2.6.23-rc2/fs/ext4/balloc.c =================================================================== --- linux-2.6.23-rc2.orig/fs/ext4/balloc.c 2007-08-06 22:19:13.000000000 -0700 +++ linux-2.6.23-rc2/fs/ext4/balloc.c 2007-08-06 22:19:16.000000000 -0700 @@ -1909,8 +1909,8 @@ void ext4_rebalance_reservation(struct e chunk = free; if (rs[i].rs_reserved || i == smp_processor_id()) { rs[i].rs_reserved = chunk; + BUG_ON(free < chunk); free -= chunk; - BUG_ON(free < 0); } } BUG_ON(free);