diff --git a/fs/minix/inode.c b/fs/minix/inode.c index 7897f5123b3d..bee191c50010 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c @@ -171,7 +171,15 @@ static bool minix_check_superblock(struct super_block *sb) { struct minix_sb_info *sbi = minix_sb(sb); - if (sbi->s_imap_blocks == 0 || sbi->s_zmap_blocks == 0) + if (sbi->s_log_zone_size != 0) { + printk("minix-fs error: zone size must equal block size. " + "s_log_zone_size > 0 is not supported.\n"); + return false; + } + + if (sbi->s_imap_blocks < 1 || sbi->s_zmap_blocks < 1 || + sbi->s_ninodes < 1 || sbi->s_firstdatazone <= 4 || + sbi->s_firstdatazone >= sbi->s_nzones) return false; /*