Merge tag 'i2c-for-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
[linux-2.6-microblaze.git] / fs / ntfs3 / super.c
index 5781b9e..0c6de62 100644 (file)
@@ -668,9 +668,11 @@ static u32 format_size_gb(const u64 bytes, u32 *mb)
 
 static u32 true_sectors_per_clst(const struct NTFS_BOOT *boot)
 {
-       return boot->sectors_per_clusters <= 0x80
-                      ? boot->sectors_per_clusters
-                      : (1u << (0 - boot->sectors_per_clusters));
+       if (boot->sectors_per_clusters <= 0x80)
+               return boot->sectors_per_clusters;
+       if (boot->sectors_per_clusters >= 0xf4) /* limit shift to 2MB max */
+               return 1U << (0 - boot->sectors_per_clusters);
+       return -EINVAL;
 }
 
 /*
@@ -713,6 +715,8 @@ static int ntfs_init_from_boot(struct super_block *sb, u32 sector_size,
 
        /* cluster size: 512, 1K, 2K, 4K, ... 2M */
        sct_per_clst = true_sectors_per_clst(boot);
+       if ((int)sct_per_clst < 0)
+               goto out;
        if (!is_power_of_2(sct_per_clst))
                goto out;