]> git.baikalelectronics.ru Git - kernel.git/commit
f2fs: fix dereference of stale list iterator after loop body
authorJakob Koschel <jakobkoschel@gmail.com>
Thu, 31 Mar 2022 22:34:14 +0000 (00:34 +0200)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 25 Apr 2022 22:13:03 +0000 (15:13 -0700)
commitd57fc4f1c7618790f0b5d3e330e7d95ace8c46d8
tree797b29d4b6836329fa9909abaf05fc98b12f07b7
parent19ff56517358af6392a12ed87671a2a1fd8e1e69
f2fs: fix dereference of stale list iterator after loop body

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: f3457379ce84 ("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>
fs/f2fs/segment.c