Skip to content

Commit 170417c

Browse files
committed
ext4: fix block validity checks for journal inodes using indirect blocks
Commit 345c0db ("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: 345c0db ("ext4: protect journal inode's blocks using block_validity") Reported-by: Arthur Marsh <[email protected]> Signed-off-by: Theodore Ts'o <[email protected]>
1 parent 7fb6413 commit 170417c

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

fs/ext4/block_validity.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,11 @@ int ext4_check_blockref(const char *function, unsigned int line,
277277
__le32 *bref = p;
278278
unsigned int blk;
279279

280+
if (ext4_has_feature_journal(inode->i_sb) &&
281+
(inode->i_ino ==
282+
le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum)))
283+
return 0;
284+
280285
while (bref < p+max) {
281286
blk = le32_to_cpu(*bref++);
282287
if (blk &&

0 commit comments

Comments
 (0)