CVE-2024-42316 mm/mglru: fix div-by-zero in vmpressure_calc_level()
A division-by-zero error in the Linux kernel's memory management can cause a system crash, leading to denial of service.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2024-42316?
CVE-2024-42316 is a medium-severity denial of service vulnerability in Linux kernel, published on 17 Aug 2024. It can only be exploited from the same machine or local network, with no action from the victim.
Official 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().
Weakness: CWE-369
Which versions are affected by CVE-2024-42316?
It affects 1 product.
Products include Linux kernel.
How do I fix CVE-2024-42316?
Apply the vendor's patch.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is CVE-2024-42316 being exploited?
There is no known exploitation of CVE-2024-42316 in the wild and no public exploit code.
Other vulnerabilities in Linux kernel
Sources
Also known as AZL-48042, BELL-CVE-2024-42316, DEBIAN-CVE-2024-42316, GHSA-f5h7-3v7h-xww3, UBUNTU-CVE-2024-42316.