From: Jan Kara Date: Thu, 30 Oct 2014 14:52:57 +0000 (-0400) Subject: ext4: fix overflow when updating superblock backups after resize X-Git-Tag: upstream/snapshot3+hdmi~1146 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=43fa8712c4c552e59bf076a4dca37f6483d2c90d;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git ext4: fix overflow when updating superblock backups after resize commit 9378c6768e4fca48971e7b6a9075bc006eda981d upstream. When there are no meta block groups update_backups() will compute the backup block in 32-bit arithmetics thus possibly overflowing the block number and corrupting the filesystem. OTOH filesystems without meta block groups larger than 16 TB should be rare. Fix the problem by doing the counting in 64-bit arithmetics. Coverity-id: 741252 Signed-off-by: Jan Kara Signed-off-by: Theodore Ts'o Reviewed-by: Lukas Czerner Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 14e0f8a..2400ad1 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -1071,7 +1071,7 @@ static void update_backups(struct super_block *sb, int blk_off, char *data, break; if (meta_bg == 0) - backup_block = group * bpg + blk_off; + backup_block = ((ext4_fsblk_t)group) * bpg + blk_off; else backup_block = (ext4_group_first_block_no(sb, group) + ext4_bg_has_super(sb, group));