Message ID | 51045F77.5000106@gmail.com |
---|---|
State | Rejected, archived |
Headers | show |
On Sat, Jan 26, 2013 at 02:57:59PM -0800, Wang Shilong wrote: > From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> > > Because it is no doubt 'start_blk + count < start_blk' always comes to > false. It is useless to have this check,remove it. Actually, it can be true --- if start_blk + count (which are both unsigned integers) overflows.... - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Jan 27, 2013 at 04:46:29PM -0800, Wang Shilong wrote: > > Actually, it can be true --- if start_blk + count (which are both > > unsigned integers) overflows.... > Yeah,you are right.... > I am sorry,I miss the overflow condition... We added it because we saw a crash that was a caused by an overflow, if memory serves correctly. Or maybe it was a mysterious data or file system corruption that was incredibly painful to find. Fun trivia fact: the European Space Agency had the Ariane 5 rocket explode on its maiden flight due to a integer overflow bug. - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> On Sat, Jan 26, 2013 at 02:57:59PM -0800, Wang Shilong wrote: >> From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> >> >> Because it is no doubt 'start_blk + count < start_blk' always comes to >> false. It is useless to have this check,remove it. > Actually, it can be true --- if start_blk + count (which are both > unsigned integers) overflows.... Yeah,you are right.... I am sorry,I miss the overflow condition... > - Ted > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/ext4/block_validity.c b/fs/ext4/block_validity.c index 3f11656..5ffce82 100644 --- a/fs/ext4/block_validity.c +++ b/fs/ext4/block_validity.c @@ -226,7 +226,6 @@ int ext4_data_block_valid(struct ext4_sb_info *sbi, ext4_fsblk_t start_blk, struct rb_node *n = sbi->system_blks.rb_node; if ((start_blk <= le32_to_cpu(sbi->s_es->s_first_data_block)) || - (start_blk + count < start_blk) || (start_blk + count > ext4_blocks_count(sbi->s_es))) { sbi->s_es->s_last_error_block = cpu_to_le64(start_blk); return 0;