Name | CVE-2024-42316 |
Description | In the Linux kernel, the following vulnerability has been resolved: mm/mglru: fix div-by-zero in vmpressure_calc_level() evict_folios() uses a second pass to reclaim folios that have gone through page writeback and become clean before it finishes the first pass, since folio_rotate_reclaimable() cannot handle those folios due to the isolation. The second pass tries to avoid potential double counting by deducting scan_control->nr_scanned. However, this can result in underflow of nr_scanned, under a condition where shrink_folio_list() does not increment nr_scanned, i.e., when folio_trylock() fails. The underflow can cause the divisor, i.e., scale=scanned+reclaimed in vmpressure_calc_level(), to become zero, resulting in the following crash: [exception RIP: vmpressure_work_fn+101] process_one_work at ffffffffa3313f2b Since scan_control->nr_scanned has no established semantics, the potential double counting has minimal risks. Therefore, fix the problem by not deducting scan_control->nr_scanned in evict_folios(). |
Source | CVE (at NVD; CERT, LWN, oss-sec, fulldisc, Red Hat, Ubuntu, Gentoo, SUSE bugzilla/CVE, GitHub advisories/code/issues, web search, more) |
The table below lists information on source packages.
Source Package | Release | Version | Status |
---|---|---|---|
linux (PTS) | jessie, jessie (lts) | 3.16.84-1 | vulnerable |
stretch (security) | 4.9.320-2 | vulnerable | |
stretch (lts), stretch | 4.9.320-3 | vulnerable | |
buster (security), buster, buster (lts) | 4.19.316-1 | vulnerable | |
bullseye | 5.10.223-1 | fixed | |
bullseye (security) | 5.10.226-1 | fixed | |
bookworm | 6.1.115-1 | fixed | |
bookworm (security) | 6.1.112-1 | fixed | |
trixie | 6.11.7-1 | fixed | |
sid | 6.11.9-1 | fixed |
The information below is based on the following data on fixed versions.
Package | Type | Release | Fixed Version | Urgency | Origin | Debian Bugs |
---|---|---|---|---|---|---|
linux | source | jessie | (unfixed) | end-of-life | ||
linux | source | stretch | (unfixed) | end-of-life | ||
linux | source | buster | (unfixed) | end-of-life | ||
linux | source | bullseye | (not affected) | |||
linux | source | bookworm | 6.1.106-1 | |||
linux | source | (unstable) | 6.10.3-1 |
[bullseye] - linux <not-affected> (Vulnerable code not present)
https://git.kernel.org/linus/8b671fe1a879923ecfb72dda6caf01460dd885ef (6.11-rc1)