mm/vmscan: report RCU-tasks quiescent states in shrink_lruvec()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: mm/vmscan: report RCU-tasks quiescent states in shrink_lruvec() I am seeing some rcu_tasks stalls in the Meta fleet during reclaim. INFO: rcu_tasks detected stalls on tasks: 0000000088620d09: .. nvcsw: 6735/6735 holdout: 1 idle_cpu: -1/8 task:GlobalCPUThread state:R running task pid:2552016 tgid:2524552 Call Trace: shrink_lruvec mem_cgroup_iter shrink_node do_try_to_free_pages try_to_free_pages __alloc_frozen_pages_noprof alloc_pages_noprof pte_alloc_one __pte_alloc handle_mm_fault Nothing promises direct reclaim returns in bounded time, and the scan loop in shrink_lruvec() only calls cond_resched(), which is a no-op on PREEMPTION kernels. Involuntary preemption is not a Tasks-RCU quiescent state, so the reclaiming task never reports one and becomes a holdout. Upgrade it to cond_resched_tasks_rcu_qs(), which reports a quiescent state even when cond_resched() does nothing. PS: This has been discussed in [1]
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in 4f50593c9cbc883d8c9b50148a3e8a8b1fd35f57; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in 4cdc1bdf40944de5c6b118fef07ad23f07844338; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in a67a00a70a7c8309ca47ea157ef3e8ed3d268f5b; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in 029c9408049f7f582230322057b7075bea594fd5; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in b5391676c61d94ffe3272dcf6723738b802f79e8; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in 3fd50239986302cb050d3649351bcec00fa9d5ab; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in cf3ba0911a1cf8680371ff113b90088edd01d2bb; From 8315f42295d2667a7f942f154b73a86fd7cb2227 · fixed in 25f52e81216884a7444bf07a606691feb09a94e3
- Linux Linux
3.18
- KernelLinux
From 3.18.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.109; From 6.13.0 · fixed in 6.18.50; From 6.19.0 · fixed in 7.2.4
References 8
git.kernel.org
- stable/c/4f50593c9cbc883d8c9b50148a3e8a8b1fd35f57
- stable/c/4cdc1bdf40944de5c6b118fef07ad23f07844338
- stable/c/a67a00a70a7c8309ca47ea157ef3e8ed3d268f5b
- stable/c/029c9408049f7f582230322057b7075bea594fd5
- stable/c/b5391676c61d94ffe3272dcf6723738b802f79e8
- stable/c/3fd50239986302cb050d3649351bcec00fa9d5ab
- stable/c/cf3ba0911a1cf8680371ff113b90088edd01d2bb
- stable/c/25f52e81216884a7444bf07a606691feb09a94e3