Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp528827ybz; Wed, 29 Apr 2020 04:50:35 -0700 (PDT) X-Google-Smtp-Source: APiQypJHNeteO3EG5vRgRZWI6bWeGVUdH1o9Z9rPVRcVak16VmWURwwoFicKNxhK+0vP7Etq/ZCD X-Received: by 2002:aa7:d28a:: with SMTP id w10mr1953195edq.206.1588161035509; Wed, 29 Apr 2020 04:50:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588161035; cv=none; d=google.com; s=arc-20160816; b=uylQO0Ug1MISAcBYnD39ArSQLFNqGMmjY5yQjElaVncT0NKPYzI/euFcgDi1ctvGOv eGZfbOGJB6/GSR+Yl96+lJD+E7Sg1f2u76r3zCQk2riWYjSMMxznGvOufS+ZPajn7xPl afyA5hF3CIomneoMH3ZhIL16cSxq+8LzI3A5nxRueJIIqFFgeb3dzR6xWorER+y+YjQH lciiRHq4Y7JOx4iJdcGTZquHUcR83mjcGgDguLOZV7npmI4anIVxE3cu/iA7OaVAjV3w qf3uE457WjJQNqP/xZU66IROlWGhnMK+2cEtswPDW/2kuqTCVFZPUCokGxfyF75hauAZ pnjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=xTgN9qwdpqnwQVGDYdBAKZaoAE2G6D7ZZSVftGVthCM=; b=ezmbCP5VJqRKzcqBiuFk2a8ngP1L446vWL4n5hUJ28XQvzlqNQmtHwT1q/g9lgrtvy SSRzPSZEa/8VawL1brREzcpf/KdubEG7eM4l86CW1+q6u3A/ELHDaYaEUIpPJ690fyhU 5jDIAN+voHhMNVe27MnO+oPqH1EleAHOaAT2CXISFCpqHHbmpXFtlPEwfY0T01CJUyBz o4WV6Uj4/MDiX4JWcTtCMzFGtL05luPU3jczbFpfAY4LtYrlPrMS0WDlIWsLWZsJVerd fjGv908bAteHtt52CVUDVHejRF8dHFqgnG0l66/7mc+9QaNoZe7up/QGzuQ/lrB/ldO3 djHA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cw27si3261648edb.289.2020.04.29.04.50.08; Wed, 29 Apr 2020 04:50:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726743AbgD2LsZ (ORCPT + 99 others); Wed, 29 Apr 2020 07:48:25 -0400 Received: from ex13-edg-ou-002.vmware.com ([208.91.0.190]:20553 "EHLO EX13-EDG-OU-002.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726951AbgD2LsU (ORCPT ); Wed, 29 Apr 2020 07:48:20 -0400 Received: from sc9-mailhost2.vmware.com (10.113.161.72) by EX13-EDG-OU-002.vmware.com (10.113.208.156) with Microsoft SMTP Server id 15.0.1156.6; Wed, 29 Apr 2020 04:33:11 -0700 Received: from localhost.localdomain (ashwinh-vm-1.vmware.com [10.110.19.225]) by sc9-mailhost2.vmware.com (Postfix) with ESMTP id B3A7FB1F56; Wed, 29 Apr 2020 07:33:10 -0400 (EDT) From: ashwin-h To: , CC: , , , , , , , , , Ashwin H Subject: [PATCH 4/5] ext4: fix block validity checks for journal inodes using indirect blocks Date: Thu, 30 Apr 2020 00:51:38 +0530 Message-ID: <4a0508c21cf3113aea8dce2f678d8188915cf77f.1587713792.git.ashwinh@vmware.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-002.vmware.com: ashwinh@vmware.com does not designate permitted sender hosts) Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Theodore Ts'o commit 170417c8c7bb2cbbdd949bf5c443c0c8f24a203b upstream. Commit 345c0dbf3a30 ("ext4: protect journal inode's blocks using block_validity") failed to add an exception for the journal inode in ext4_check_blockref(), which is the function used by ext4_get_branch() for indirect blocks. This caused attempts to read from the ext3-style journals to fail with: [ 848.968550] EXT4-fs error (device sdb7): ext4_get_branch:171: inode #8: block 30343695: comm jbd2/sdb7-8: invalid block Fix this by adding the missing exception check. Fixes: 345c0dbf3a30 ("ext4: protect journal inode's blocks using block_validity") Reported-by: Arthur Marsh Signed-off-by: Theodore Ts'o Signed-off-by: Ashwin H --- fs/ext4/block_validity.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fs/ext4/block_validity.c b/fs/ext4/block_validity.c index bdc8e48..9c9c639 100644 --- a/fs/ext4/block_validity.c +++ b/fs/ext4/block_validity.c @@ -274,6 +274,11 @@ int ext4_check_blockref(const char *function, unsigned int line, __le32 *bref = p; unsigned int blk; + if (ext4_has_feature_journal(inode->i_sb) && + (inode->i_ino == + le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum))) + return 0; + while (bref < p+max) { blk = le32_to_cpu(*bref++); if (blk && -- 2.7.4