Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp6211449ybv; Tue, 18 Feb 2020 12:06:53 -0800 (PST) X-Google-Smtp-Source: APXvYqzn6ZWHZOiQju9XV2DIhtxuH14WQ6vhxvpxP1xT2qqgiplOHDmEO3ebbPElSAdaBtmVCzpO X-Received: by 2002:aca:2112:: with SMTP id 18mr2245926oiz.155.1582056413313; Tue, 18 Feb 2020 12:06:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582056413; cv=none; d=google.com; s=arc-20160816; b=R3CDJrO8TbMntmgzPdkQ3oU01PRDMxgYc4t9Dagxtv3sUS56EcXxfm8zF/jLhh0GNU y+BNelyMK96E01B0GUYFIkS70OGf470C7BUI6GbGCU/a7ifCwaCfWGZgsn3yDA14KTIl GNKzM3KxbWA1eyXNp9tO7ZHzJP4SenxYrv2w1m3NvJDOHgO0UQtmMExQ+rAxY3BAZrLD PZe+1XV2ec+Mlem0NIlHDA79PVz1JfVJI81nu0MJAxrJ4FkwEQNS4vsK99vxXfXZzV7M 3l7v+JxIOTR3EhzuEiLWUX/CpYt+J2JH1xQxxqRKsbzBMFGutdpXD3sJdUIGmOKIFCVA Vl5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=bVqLPpZheSY6G5xjjm2DWImMYNuWGd8wPoCPAGAFIuI=; b=OmwZ6a7SkmUsF/hco5CCLJ8ioj+79E+89ZZCESJgNXLRLpQC5OHA42G/Qegjos58zZ nKi7jW/Wotpu+KqKF10x8bJmfqt7zW+I7BoLcfDm4YjUpy/HHQPz84xRH7SU35UK4ppu Qy5ljwWcz9VOTxAm3+aMKFI+YD+9GIKTxtoULDf8b6o9G2n8JhJNB05kD+c4BrgJq5KF sUIyXNMOuY98WlY1AjACnDWt/imnp8wxHArsikZrjyFz0H8VcheTBACi482HxHMKVm1A 0mRuIpiRIdMbGr5r8EJw6dDmdFbTwmlrdOvNoDZmMWxeRrD6AzMCU3Si1mpH+kmEJ13A l0UQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UexNbJ+p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j20si2201187otp.147.2020.02.18.12.06.41; Tue, 18 Feb 2020 12:06:53 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UexNbJ+p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728686AbgBRUA4 (ORCPT + 99 others); Tue, 18 Feb 2020 15:00:56 -0500 Received: from mail.kernel.org ([198.145.29.99]:40276 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728679AbgBRUAx (ORCPT ); Tue, 18 Feb 2020 15:00:53 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B98DE24125; Tue, 18 Feb 2020 20:00:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582056053; bh=1lHGm+w8hQp6p/rbjhDZdkWSNoYGCVTZVEp77iVz9Vg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UexNbJ+plZfX92XzIAF07aVZVBcFE+ljKf2RBisJ+btFaXk1dnXAVIvkxLjz0CrJB mBNtriURY5N0nOFX7FOuoyO8cOCw7zInY0cqQj8k8yRL+V1VhBAm+yDiF49Ae0Acvm R/5mGNdvIEnQHiG50cIfZpTNLZ4l7emahp0A8Lls= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Herbert Poetzl , Theodore Tso , stable@kernel.org Subject: [PATCH 5.5 17/80] ext4: fix support for inode sizes > 1024 bytes Date: Tue, 18 Feb 2020 20:54:38 +0100 Message-Id: <20200218190433.881962959@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200218190432.043414522@linuxfoundation.org> References: <20200218190432.043414522@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Theodore Ts'o commit 4f97a68192bd33b9963b400759cef0ca5963af00 upstream. A recent commit, 9803387c55f7 ("ext4: validate the debug_want_extra_isize mount option at parse time"), moved mount-time checks around. One of those changes moved the inode size check before the blocksize variable was set to the blocksize of the file system. After 9803387c55f7 was set to the minimum allowable blocksize, which in practice on most systems would be 1024 bytes. This cuased file systems with inode sizes larger than 1024 bytes to be rejected with a message: EXT4-fs (sdXX): unsupported inode size: 4096 Fixes: 9803387c55f7 ("ext4: validate the debug_want_extra_isize mount option at parse time") Link: https://lore.kernel.org/r/20200206225252.GA3673@mit.edu Reported-by: Herbert Poetzl Signed-off-by: Theodore Ts'o Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman --- fs/ext4/super.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -3768,6 +3768,15 @@ static int ext4_fill_super(struct super_ */ sbi->s_li_wait_mult = EXT4_DEF_LI_WAIT_MULT; + blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); + if (blocksize < EXT4_MIN_BLOCK_SIZE || + blocksize > EXT4_MAX_BLOCK_SIZE) { + ext4_msg(sb, KERN_ERR, + "Unsupported filesystem blocksize %d (%d log_block_size)", + blocksize, le32_to_cpu(es->s_log_block_size)); + goto failed_mount; + } + if (le32_to_cpu(es->s_rev_level) == EXT4_GOOD_OLD_REV) { sbi->s_inode_size = EXT4_GOOD_OLD_INODE_SIZE; sbi->s_first_ino = EXT4_GOOD_OLD_FIRST_INO; @@ -3785,6 +3794,7 @@ static int ext4_fill_super(struct super_ ext4_msg(sb, KERN_ERR, "unsupported inode size: %d", sbi->s_inode_size); + ext4_msg(sb, KERN_ERR, "blocksize: %d", blocksize); goto failed_mount; } /* @@ -3988,14 +3998,6 @@ static int ext4_fill_super(struct super_ if (!ext4_feature_set_ok(sb, (sb_rdonly(sb)))) goto failed_mount; - blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); - if (blocksize < EXT4_MIN_BLOCK_SIZE || - blocksize > EXT4_MAX_BLOCK_SIZE) { - ext4_msg(sb, KERN_ERR, - "Unsupported filesystem blocksize %d (%d log_block_size)", - blocksize, le32_to_cpu(es->s_log_block_size)); - goto failed_mount; - } if (le32_to_cpu(es->s_log_block_size) > (EXT4_MAX_BLOCK_LOG_SIZE - EXT4_MIN_BLOCK_LOG_SIZE)) { ext4_msg(sb, KERN_ERR,