CVE-2024-35929: rcu/nocb: Fix WARN_ON_ONCE() in the rcu_nocb_bypass_lock()
In the Linux kernel, the following vulnerability has been resolved:
rcu/nocb: Fix WARNONONCE() in the rcunocbbypasslock()
For the kernels built with CONFIGRCUNOCBCPUDEFAULTALL=y and CONFIGRCULAZY=y, the following scenarios will trigger WARNONONCE() in the rcunocbbypasslock() and rcunocbwaitcontended() functions:
CPU2 CPU11 kthread rcunocbcbkthread ksyswrite rcudobatch vfswrite rcutorturetimercb procsyswrite kmemcachefree procsyscallhandler kmemleakfree dropcachessysctlhandler deleteobjectfull dropslab deleteobject shrinkslab putobject lazyrcushrinkscan callrcu rcunocbflushbypass callrcucommn rcunocbbypasslock rawspintrylock(&rdp->nocbbypasslock) fail atomicinc(&rdp->nocblockcontended); rcunocbwaitcontended WARNONONCE(smpprocessorid() != rdp->cpu); WARNONONCE(atomicread(&rdp->nocblockcontended)) | | same rdp and rdp->cpu != 11 |
Reproduce this bug with "echo 3 > /proc/sys/vm/dropcaches".
This commit therefore uses rcunocbtryflushbypass() instead of rcunocbflushbypass() in lazyrcushrinkscan(). If the nocbbypass queue is being flushed, then rcunocbtryflushbypass will return directly.
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2024-35929?
The severity of CVE-2024-35929 is not explicitly rated but it relates to issues in the Linux kernel affecting systems configured with specific options.
How do I fix CVE-2024-35929?
To fix CVE-2024-35929, you should upgrade to the latest versions of the Linux kernel that include the patches, specifically versions 6.12.10-1 or 6.12.11-1.
Which versions of the Linux kernel are affected by CVE-2024-35929?
CVE-2024-35929 affects Linux kernel versions up to 6.6.27 and between 6.7 and 6.8.6.
Are Debian packages impacted by CVE-2024-35929?
Yes, Debian packages of the Linux kernel versions up to 6.1.123-1 are impacted by CVE-2024-35929.
What specific configurations trigger the issue in CVE-2024-35929?
The issue in CVE-2024-35929 is triggered in kernels built with CONFIG_RCU_NOCB_CPU_DEFAULT_ALL=y and CONFIG_RCU_LAZY=y.