Commit a7ce0f4b authored by Alon Zahavi's avatar Alon Zahavi Committed by openeuler-sync-bot
Browse files

fs/ntfs3: Fix attr_punch_hole() null pointer derenference

mainline inclusion
from mainline-v6.2-rc1
commit 6d5c9e79
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I683ER
CVE: CVE-2022-4842

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6d5c9e79b726cc473d40e9cb60976dbe8e669624



--------------------------------

The bug occours due to a misuse of `attr` variable instead of `attr_b`.
`attr` is being initialized as NULL, then being derenfernced
as `attr->res.data_size`.

This bug causes a crash of the ntfs3 driver itself,
If compiled directly to the kernel, it crashes the whole system.

Signed-off-by: default avatarAlon Zahavi <zahavi.alon@gmail.com>
Co-developed-by: default avatarTal Lossos <tallossos@gmail.com>
Signed-off-by: default avatarTal Lossos <tallossos@gmail.com>
Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
Reviewed-by: default avatarZhang Yi <yi.zhang@huawei.com>
Reviewed-by: default avatarXiu Jianfeng <xiujianfeng@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
(cherry picked from commit 86f3bddf)
parent c0c47db5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1949,7 +1949,7 @@ int attr_punch_hole(struct ntfs_inode *ni, u64 vbo, u64 bytes, u32 *frame_size)
		return -ENOENT;

	if (!attr_b->non_res) {
		u32 data_size = le32_to_cpu(attr->res.data_size);
		u32 data_size = le32_to_cpu(attr_b->res.data_size);
		u32 from, to;

		if (vbo > data_size)