Description
In the Linux kernel, the following vulnerability has been resolved: mm/damon/core: validate ranges in damon_set_regions() DAMON core logic assumes zero length regions don't exist. However, a few DAMON API callers including DAMON_SYSFS, DAMON_RECLAIM and DAMON_LRU_SORT allow users to set empty monitoring target regions. This could result in WARN_ONCE() on CONFIG_DAMON_DEBUG_SANITY enabled kernel, and divide-by-zero from damon_merge_two_regions(). For example, the WANR_ONCE() can be triggered like below. # grep DAMON_DEBUG_SANITY /boot/config-$(uname -r) # CONFIG_DAMON_DEBUG_SANITY=y # damo start # cd /sys/kernel/mm/damon/admin/kdamonds/0 # echo 0 > contexts/0/targets/0/regions/0/start # echo 0 > contexts/0/targets/0/regions/0/end # echo commit > state # dmesg [....] [ 73.705780] ------------[ cut here ]------------ [ 73.707552] start 0 >= end 0 [ 73.708452] WARNING: mm/damon/core.c:359 at damon_new_region+0x6e/0x80, CPU#1: kdamond.0/758 [...] All DAMON API callers eventually use damon_set_regions() to setup the regions. Add the validation logic in the function.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
43b0536cb4710e7bb591edfda7e68a1c327a3409 to < 71cf8a3ee1c18cfa8b88cc14bac9c2f43dd29f9baffected43b0536cb4710e7bb591edfda7e68a1c327a3409 to < b585facbafbb5cf117b37b1c75819ac046646c27affected43b0536cb4710e7bb591edfda7e68a1c327a3409 to < c927b73a5694c735314ea10e7c81c07f9bd51ad7affected43b0536cb4710e7bb591edfda7e68a1c327a3409 to < 4b6f1d6d5d07855bd1bb9e64922b049062138bfaaffected43b0536cb4710e7bb591edfda7e68a1c327a3409 to < 43aaddd0fa92010a68adeda7744c7cf497a1c8e9affected43b0536cb4710e7bb591edfda7e68a1c327a3409 to < 1292c0ecb1caefb8ca064a3639d5673991e8810caffected
Linux Linux
Default version status: affected
5.16affected0 to < 5.16unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/71cf8a3ee1c18cfa8b88cc14bac9c2f43dd29f9b ↗
- https://git.kernel.org/stable/c/b585facbafbb5cf117b37b1c75819ac046646c27 ↗
- https://git.kernel.org/stable/c/c927b73a5694c735314ea10e7c81c07f9bd51ad7 ↗
- https://git.kernel.org/stable/c/4b6f1d6d5d07855bd1bb9e64922b049062138bfa ↗
- https://git.kernel.org/stable/c/43aaddd0fa92010a68adeda7744c7cf497a1c8e9 ↗
- https://git.kernel.org/stable/c/1292c0ecb1caefb8ca064a3639d5673991e8810c ↗