Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp6204246ybv; Tue, 18 Feb 2020 12:00:10 -0800 (PST) X-Google-Smtp-Source: APXvYqwJlOwlQn0iomAKUaTmJwGBZ3wRiwPnD7xOS14t4eCQdH9/jJhf5bFEurgWDgdqi9grAbTp X-Received: by 2002:aca:2803:: with SMTP id 3mr2281448oix.162.1582056009932; Tue, 18 Feb 2020 12:00:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582056009; cv=none; d=google.com; s=arc-20160816; b=oPI101bYjgwfDLfLPim2QYJEk66wejI+g7P1MJOXK8R/ipWMEcohGN4q2NhMkZVzmt fwAeAFCYkZMMTd0sGgLtx+DEnKA+vi9Vx8nCMqKr9Yw6UxxZSTvC1xFaShbZXc87twso kUqtBVxit1OynWSKLSGoc8Uz5a00KFrHGRN7zWhUOjCrFanKOfY5CxMjccQuBCF+qfVF YiACDfOv5fXHVOFmZqsaDA8RFZfzl12qUUD9lDjXJ5pcIfU5nmeokaPnCbQY4yFnQyHb gl1P1yFEQHAMwcSKbq+Ow5oRlZwziJWXRqblr90WdPwH5u7Mq7dnRtExzk4xFTypBFFL 2tyg== 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=Go92Ra2+SLegTen5g56RadxNosrFxQ2Eqv7x/QvYx7U=; b=fXAT2yNzOlZ+GV4XFV3jGhj+Nrn3DMWsNhY9SDp+bnwtfLpxOUV51K61pcWkZXHguu H6fe2/cIN7hX9rLQ3/7htKsPt9gwkmF7QPII6c4mg9cbQIocCnXsLEIVFXWpJKSqJ8mL 5on1M3oGq2pRYne0Ok4gyg6KiwlNzy2/3Elsmk/TlTA4DzQXzvn2AYqILEk24x/iraDw VTV0DCadULnFg8ER4KjtbZsFoetr2ohDl2feWvRyam34ZK0vd6DzCtkOwmVHoQgW9lnh cagN+Kn6Nh+/CURIbK/SjQyt7ORvH60pxTKO97sAObdPAA+lw2koZwg15RjaVe5tkW0/ US9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UjC2lSJE; 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 i6si2163463oth.182.2020.02.18.11.59.57; Tue, 18 Feb 2020 12:00:09 -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=UjC2lSJE; 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 S1728203AbgBRT7g (ORCPT + 99 others); Tue, 18 Feb 2020 14:59:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:38308 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727976AbgBRT7e (ORCPT ); Tue, 18 Feb 2020 14:59:34 -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 3BB9420659; Tue, 18 Feb 2020 19:59:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582055973; bh=TQmI2Xi+jSe1xvgDZog4lmUKoHRkgibmTGpmbV6sHn4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UjC2lSJELTUhYUDXbL8s1Xy6eUJsH1BINZPznLm7dQnPH2fQoo9u+tiZvfuhuGG81 gRgfydxDyxRL6lGm2h6lA998lkr7trugYaYEg4i/45/clDvDOg5O6E7aKSQbByOu9R cSS2P1ftQNE8cjQSqPfSAPxvdNe3+qv6H06jdANY= 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.4 15/66] ext4: fix support for inode sizes > 1024 bytes Date: Tue, 18 Feb 2020 20:54:42 +0100 Message-Id: <20200218190429.495896795@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200218190428.035153861@linuxfoundation.org> References: <20200218190428.035153861@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 @@ -3765,6 +3765,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; @@ -3782,6 +3791,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; } /* @@ -3985,14 +3995,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,