]> www.infradead.org Git - users/hch/misc.git/commit
ext4: make block validity check resistent to sb bh corruption
authorOjaswin Mujoo <ojaswin@linux.ibm.com>
Fri, 28 Mar 2025 06:24:52 +0000 (11:54 +0530)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 13 Apr 2025 02:01:37 +0000 (22:01 -0400)
commitccad447a3d331a239477c281533bacb585b54a98
tree341ed8948ef1db41439839cc21aba1eef72b2f6b
parent7e50bbb134aba1df0854f171b596b3a42d35605a
ext4: make block validity check resistent to sb bh corruption

Block validity checks need to be skipped in case they are called
for journal blocks since they are part of system's protected
zone.

Currently, this is done by checking inode->ino against
sbi->s_es->s_journal_inum, which is a direct read from the ext4 sb
buffer head. If someone modifies this underneath us then the
s_journal_inum field might get corrupted. To prevent against this,
change the check to directly compare the inode with journal->j_inode.

**Slight change in behavior**: During journal init path,
check_block_validity etc might be called for journal inode when
sbi->s_journal is not set yet. In this case we now proceed with
ext4_inode_block_valid() instead of returning early. Since systems zones
have not been set yet, it is okay to proceed so we can perform basic
checks on the blocks.

Suggested-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Link: https://patch.msgid.link/0c06bc9ebfcd6ccfed84a36e79147bf45ff5adc1.1743142920.git.ojaswin@linux.ibm.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/block_validity.c
fs/ext4/inode.c