+6
−3
Loading
stable inclusion from stable-v4.19.247 commit 385edd3ce5b4b1e9d31f474a5e35a39779ec1110 category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/IBP3SH CVE: CVE-2022-49425 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=385edd3ce5b4b1e9d31f474a5e35a39779ec1110 -------------------------------- [ Upstream commit 2aaf51dd ] The list iterator variable will be a bogus pointer if no break was hit. Dereferencing it (cur->page in this case) could load an out-of-bounds/undefined value making it unsafe to use that in the comparision to determine if the specific element was found. Since 'cur->page' *can* be out-ouf-bounds it cannot be guaranteed that by chance (or intention of an attacker) it matches the value of 'page' even though the correct element was not found. This is fixed by using a separate list iterator variable for the loop and only setting the original variable if a suitable element was found. Then determing if the element was found is simply checking if the variable is set. Fixes: 8c242db9 ("f2fs: fix stale ATOMIC_WRITTEN_PAGE private pointer") Signed-off-by:Jakob Koschel <jakobkoschel@gmail.com> Reviewed-by:
Chao Yu <chao@kernel.org> Signed-off-by:
Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by:
Sasha Levin <sashal@kernel.org> Signed-off-by:
Wupeng Ma <mawupeng1@huawei.com>