Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2006253imm; Tue, 10 Jul 2018 11:28:08 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfTwWzO6c72ScXwW1VT3/OQwCeOY0rOux9yhejJl44/IPECbQvZM7u2cJb6atnaHc4oYBcU X-Received: by 2002:a17:902:b401:: with SMTP id x1-v6mr3938248plr.236.1531247288319; Tue, 10 Jul 2018 11:28:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531247288; cv=none; d=google.com; s=arc-20160816; b=CJ6sbEEbEa0mpMZ+eL5tqxOK6JifqIzXgaHObZdBdHO7+mN55AjS36NZU+8Yr6GKJ6 DCsr7M8bijuNxVirqK5tNmWQ8Yreye3Ciw0zaJqiFEisge4MKfk0DOim+2jrYqZD0PU+ 2EBC0dXDuic8q+Hm2P2yAoFKpZQn9N9svVzgrm38pBoNOjhtOzq562PccfBeyjZCWAjO lDOnW+wSPP4N8i7lzpHrC4XbNGrPwZrfK44q+Ae9G47Vset1rbc2Wba3AQm4Po1dlY7R ebzm9DGPBS7G65NcAHTxIUEltllkcQuCknS7VuZbyM7bfln5vcMZTjZop/FqemvcdJV+ vjzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=5y4XGqhvDV5a1+ss3X/T9x/IurzZiL+UmUIFkMUEojc=; b=YbIGSgq7aa8hRrCfd3pkuSDrebiuYRO3DYbj3QwZ9oWWkQZu6C56rgFoBcVp1o10vc CGztEBQ+bPoVScTk30Sx+fMTWOw0kXZG4tOcyvYgBNh82/BF77uj5EmAO4aCDlsAFbAp xVvfKYMhs6V9NU49Q10cyrTMa5bVzn/81KpjRDhbqSkyFfBMJGgi31WlS6b7vqnXTTQ1 gfMZzWosGd+numooszZKZxiAAD4ZyF8+KSjQE3UrdRVr8YGQ4i7JJjP3JxoYv7wK9OWs kWEbdbULauIQjfI3SSIHwhVkN/OFhGL5ADGAt5WqpGESwBPO5HdPUiAQ47QuwS27uAEO eIUA== ARC-Authentication-Results: i=1; mx.google.com; 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 70-v6si12326451pfz.72.2018.07.10.11.27.53; Tue, 10 Jul 2018 11:28:08 -0700 (PDT) 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; 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 S1732922AbeGJS04 (ORCPT + 99 others); Tue, 10 Jul 2018 14:26:56 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:44618 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732909AbeGJS04 (ORCPT ); Tue, 10 Jul 2018 14:26:56 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 3E20EDB4; Tue, 10 Jul 2018 18:26:45 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Theodore Tso , stable@kernel.org Subject: [PATCH 3.18 11/23] ext4: make sure bitmaps and the inode table dont overlap with bg descriptors Date: Tue, 10 Jul 2018 20:24:44 +0200 Message-Id: <20180710182309.365908106@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180710182308.877332304@linuxfoundation.org> References: <20180710182308.877332304@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Theodore Ts'o commit 77260807d1170a8cf35dbb06e07461a655f67eee upstream. It's really bad when the allocation bitmaps and the inode table overlap with the block group descriptors, since it causes random corruption of the bg descriptors. So we really want to head those off at the pass. https://bugzilla.kernel.org/show_bug.cgi?id=199865 Signed-off-by: Theodore Ts'o Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman --- fs/ext4/super.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -2064,6 +2064,7 @@ static int ext4_check_descriptors(struct struct ext4_sb_info *sbi = EXT4_SB(sb); ext4_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block); ext4_fsblk_t last_block; + ext4_fsblk_t last_bg_block = sb_block + ext4_bg_num_gdb(sb, 0) + 1; ext4_fsblk_t block_bitmap; ext4_fsblk_t inode_bitmap; ext4_fsblk_t inode_table; @@ -2096,6 +2097,14 @@ static int ext4_check_descriptors(struct if (!(sb->s_flags & MS_RDONLY)) return 0; } + if (block_bitmap >= sb_block + 1 && + block_bitmap <= last_bg_block) { + ext4_msg(sb, KERN_ERR, "ext4_check_descriptors: " + "Block bitmap for group %u overlaps " + "block group descriptors", i); + if (!(sb->s_flags & MS_RDONLY)) + return 0; + } if (block_bitmap < first_block || block_bitmap > last_block) { ext4_msg(sb, KERN_ERR, "ext4_check_descriptors: " "Block bitmap for group %u not in group " @@ -2110,6 +2119,14 @@ static int ext4_check_descriptors(struct if (!(sb->s_flags & MS_RDONLY)) return 0; } + if (inode_bitmap >= sb_block + 1 && + inode_bitmap <= last_bg_block) { + ext4_msg(sb, KERN_ERR, "ext4_check_descriptors: " + "Inode bitmap for group %u overlaps " + "block group descriptors", i); + if (!(sb->s_flags & MS_RDONLY)) + return 0; + } if (inode_bitmap < first_block || inode_bitmap > last_block) { ext4_msg(sb, KERN_ERR, "ext4_check_descriptors: " "Inode bitmap for group %u not in group " @@ -2124,6 +2141,14 @@ static int ext4_check_descriptors(struct if (!(sb->s_flags & MS_RDONLY)) return 0; } + if (inode_table >= sb_block + 1 && + inode_table <= last_bg_block) { + ext4_msg(sb, KERN_ERR, "ext4_check_descriptors: " + "Inode table for group %u overlaps " + "block group descriptors", i); + if (!(sb->s_flags & MS_RDONLY)) + return 0; + } if (inode_table < first_block || inode_table + sbi->s_itb_per_group - 1 > last_block) { ext4_msg(sb, KERN_ERR, "ext4_check_descriptors: "