All of lore.kernel.org
 help / color / mirror / Atom feed
From: ashwin-h <ashwinh@vmware.com>
To: <tytso@mit.edu>, <adilger.kernel@dilger.ca>
Cc: <linux-ext4@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<stable@kernel.org>, <srivatsab@vmware.com>,
	<srivatsa@csail.mit.edu>, <rostedt@goodmis.org>,
	<srostedt@vmware.com>, <gregkh@linuxfoundation.org>,
	<ashwin.hiranniah@gmail.com>, Ashwin H <ashwinh@vmware.com>
Subject: [PATCH 4/5] ext4: fix block validity checks for journal inodes using indirect blocks
Date: Thu, 30 Apr 2020 00:51:38 +0530	[thread overview]
Message-ID: <4a0508c21cf3113aea8dce2f678d8188915cf77f.1587713792.git.ashwinh@vmware.com> (raw)
In-Reply-To: <cover.1587713792.git.ashwinh@vmware.com>

From: Theodore Ts'o <tytso@mit.edu>

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 <arthur.marsh@internode.on.net>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Ashwin H <ashwinh@vmware.com>
---
 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


  parent reply	other threads:[~2020-04-29 11:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 19:21 [PATCH 0/5] Backport to 4.9- ext4: protect journal inode's blocks using block_validity ashwin-h
2020-04-29 12:59 ` Greg KH
2020-04-29 20:39   ` Ashwin H
2020-05-01 12:10     ` Greg KH
2020-04-29 19:21 ` [PATCH 1/5] ext4: avoid declaring fs inconsistent due to invalid file handles ashwin-h
2020-04-29 19:21 ` [PATCH 2/5] ext4: protect journal inode's blocks using block_validity ashwin-h
2020-04-29 19:21 ` [PATCH 3/5] ext4: don't perform block validity checks on the journal inode ashwin-h
2020-04-29 19:21 ` ashwin-h [this message]
2020-04-29 19:21 ` [PATCH 5/5] ext4: unsigned int compared against zero ashwin-h
2020-04-30  4:22 [PATCH 0/5] Backport to 4.14 - ext4: protect journal inode's blocks using block_validity ashwin-h
2020-04-30  4:22 ` [PATCH 4/5] ext4: fix block validity checks for journal inodes using indirect blocks ashwin-h
2020-04-30  4:35 [PATCH 0/5] Backport to 4.4 - ext4: protect journal inode's blocks using block_validity ashwin-h
2020-04-30  4:35 ` [PATCH 4/5] ext4: fix block validity checks for journal inodes using indirect blocks ashwin-h

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4a0508c21cf3113aea8dce2f678d8188915cf77f.1587713792.git.ashwinh@vmware.com \
    --to=ashwinh@vmware.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=ashwin.hiranniah@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=srivatsa@csail.mit.edu \
    --cc=srivatsab@vmware.com \
    --cc=srostedt@vmware.com \
    --cc=stable@kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.