Unverified Commit 86daf50f authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!3851 ext4: fix slab-out-of-bounds in ext4_find_extent()

Merge Pull Request from: @ci-robot 
 
PR sync from: Baokun Li <libaokun1@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/ZG2ZE5PT5A2P2FZDKDHLVILCDL4GMEZX/ 
yangerkun (2):
  ext4: avoid recheck extent for EXT4_EX_FORCE_CACHE
  ext4: check magic even the extent block bh is verified


-- 
2.31.1
 
https://gitee.com/openeuler/kernel/issues/I8UB3F 
 
Link:https://gitee.com/openeuler/kernel/pulls/3851

 

Reviewed-by: default avatarzhangyi (F) <yi.zhang@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parents 0733751e 62a19d6c
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -568,13 +568,24 @@ __read_extent_tree_block(const char *function, unsigned int line,
		if (err < 0)
			goto errout;
	}
	if (buffer_verified(bh) && !(flags & EXT4_EX_FORCE_CACHE))
	if (buffer_verified(bh)) {
		if (unlikely(ext_block_hdr(bh)->eh_magic != EXT4_EXT_MAGIC)) {
			err = -EFSCORRUPTED;
			ext4_error_inode(inode, function, line, 0,
				"invalid magic for verified extent block %llu",
				(unsigned long long)bh->b_blocknr);
			goto errout;
		}

		if (!(flags & EXT4_EX_FORCE_CACHE))
			return bh;
	} else {
		err = __ext4_ext_check(function, line, inode, ext_block_hdr(bh),
				       depth, pblk, le32_to_cpu(idx->ei_block));
		if (err)
			goto errout;
		set_buffer_verified(bh);
	}
	/*
	 * If this is a leaf block, cache all of its entries
	 */