CVE Catalog

CVE-2026-89759

Low risk· EPSS 8%
Published: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.19%

8th percentile - higher than 8% of all known CVEs

Summary

In the Linux kernel, a vulnerability was fixed in the kmemleak module where kmemleak_scan() scanned all task stacks under a single RCU read-side critical section with no reschedule point. On hosts with very many threads, this could hog a CPU and trip the soft lockup watchdog. The fix walks tasks one PID at a time using find_ge_pid() and releases the RCU lock between tasks.

Risk Assessment

On systems with a very large number of threads (especially debug builds with KASAN/lockdep), kmemleak scanning can block a CPU for over 20 seconds, causing false watchdog alarms and temporary service unavailability.

Recommendation

Update the Linux kernel to a version containing this fix (the 3-patch mm/kmemleak series). If updating is not possible, consider disabling kmemleak in the kernel configuration on hosts with very many threads.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: mm/kmemleak: avoid soft lockup when scanning task stacks Patch series "mm/kmemleak: avoid soft lockup when scanning task", v3. kmemleak_scan() scans every task stack under one rcu_read_lock() with no reschedule point, which can trip the soft lockup watchdog on hosts with very many threads. That prints the following message, depending on the workload+host configuration: watchdog: BUG: soft lockup - CPU#35 stuck for 22s! [kmemleak:537] scan_block kmemleak_scan kmemleak_scan_thread kthread Patch 1 walks the tasks with find_ge_pid() so the scan reschedules between tasks Patches 2-3 let the scan loops stop early once a scan is interrupted. This patch (of 3): kmemleak_scan() walks every thread and scans its kernel stack under a single rcu_read_lock() with no reschedule point. On a host with very many threads -- amplified by KASAN/lockdep in debug builds -- this loop can hog a CPU long enough to trip the soft lockup watchdog: watchdog: BUG: soft lockup - CPU#35 stuck for 22s! [kmemleak:537] scan_block kmemleak_scan kmemleak_scan_thread kthread A cond_resched() cannot be added directly: the loop runs inside an RCU read-side critical section. Walk the tasks one PID at a time with find_ge_pid(), taking the RCU read lock only to look up and pin each task. The stack is then scanned with no lock held, so cond_resched() runs between tasks and the scan stops early on scan_should_stop(). This follows the next_tgid()/task_seq_get_next() iteration pattern and keeps each RCU critical section short.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS