ext4: add check for inodes_count overflow in new resize ioctl
authorTheodore Ts'o <tytso@mit.edu>
Mon, 22 Apr 2013 02:56:32 +0000 (22:56 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 22 Apr 2013 02:56:32 +0000 (22:56 -0400)
Addresses-Red-Hat-Bugzilla: #913245

Reported-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Cc: stable@vger.kernel.org
fs/ext4/resize.c

index 08d2312c0fd4318adcfb4363533bdbfa8cdfb819..b27c96d01965b97a1998b8542d31d9639a0b0161 100644 (file)
@@ -1882,6 +1882,10 @@ retry:
                return 0;
 
        n_group = ext4_get_group_number(sb, n_blocks_count - 1);
+       if (n_group > (0xFFFFFFFFUL / EXT4_INODES_PER_GROUP(sb))) {
+               ext4_warning(sb, "resize would cause inodes_count overflow");
+               return -EINVAL;
+       }
        ext4_get_group_no_and_offset(sb, o_blocks_count - 1, &o_group, &offset);
 
        n_desc_blocks = num_desc_blocks(sb, n_group + 1);