CVE-2026-98537
NoneCVSS
—
EPSS
0.2%
Published
Oct 18, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux task scheduling can cause the whole computer to crash when memory runs very low.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
NULL pointer dereference of worker->current_pwq inside check_flush_dependency() when a kworker reaches the function outside of process_one_work(), such as when worker_thread() acts as pool manager during GFP_KERNEL allocation that triggers the OOM notifier.
Why it matters to the business
System instability or kernel panic on Linux hosts under memory pressure; low likelihood of widespread exploitation given stable low EPSS and lack of known threat actor use or ransomware campaigns.
How an attack unfolds
An attacker with local access exhausts memory to force OOM notifier invocation while a kworker is in the pool-manager path; this triggers the unguarded dereference of a NULL current_pwq, resulting in a crash rather than a controlled exploit.
How to fix it
Update to a Linux kernel containing the guard on worker->current_pwq before the WQ_MEM_RECLAIM warning; apply the fix from the workqueue patch that resolves the NULL dereference.
How to confirm the fix worked
Confirm kernel version contains the described guard; reproduce OOM conditions while monitoring for absence of the check_flush_dependency+0x80 call trace; review dmesg for the original panic signature.
Typical attack path
- Obtain local code execution on a Linux system
- Trigger sustained memory pressure to reach OOM paths
- Cause kworker to enter worker_thread() pool-manager state
- Invoke allocation that reaches out_of_memory() and blocking_notifier_call_chain()
- Reach check_flush_dependency() with current_pwq still NULL
How to detect it
Search kernel logs and crash dumps for the exact call trace involving check_flush_dependency during OOM paths; correlate with alloc_worker and create_worker entries under memory pressure.
- check_flush_dependency+0x80/0x120
- worker_thread+0xe8/0x2b8
- create_worker+0x4c/0x20c
- out_of_memory+0xb4/0x458
- blocking_notifier_call_chain+0x58/0xa0
What your security team should do
- Prioritize kernel updates on systems that frequently hit memory pressure
- Monitor EPSS and KEV status for any future increase in exploit maturity
- Harden workloads to reduce OOM notifier frequency where feasible
The record
In the Linux kernel, the following vulnerability has been resolved: workqueue: Fix NULL current_pwq deref in flush dependency check check_flush_dependency() uses current_wq_worker() to determine whether the caller is a workqueue worker and then dereferences worker->current_pwq to test whether the current workqueue is WQ_MEM_RECLAIM. current_wq_worker() only means that %current has PF_WQ_WORKER set. A kworker can reach check_flush_dependency() while it is not executing a work item. One such path is worker_thread() acting as the pool manager, where create_worker() does GFP_KERNEL allocation and the allocation path invokes the OOM notifier. In that state worker->current_pwq is NULL because current_pwq is set only by process_one_work() and cleared again after the work function returns. [ 416.760634][ T375] Call trace: [ 416.760638][ T375] check_flush_dependency+0x80/0x120 (P) [ 416.760648][ T375] __flush_work+0x98/0x224 [ 416.760657][ T375] flush_work+0x30/0x44 [ 416.760665][ T375] ... [ 416.760710][ T375] blocking_notifier_call_chain+0x58/0xa0 [ 416.760719][ T375] out_of_memory+0xb4/0x458 [ 416.760730][ T375] __alloc_pages_may_oom+0x11c/0x1a8 [ 416.760739][ T375] __alloc_pages_slowpath+0x314/0x46c [ 416.760746][ T375] __alloc_frozen_pages_noprof+0x110/0x1a4 [ 416.760753][ T375] new_slab+0x12c/0x484 [ 416.760759][ T375] ___slab_alloc+0x7a8/0xc7c [ 416.760765][ T375] __slab_alloc+0x74/0xd8 [ 416.760772][ T375] __kmalloc_cache_node_noprof+0x2ac/0x304 [ 416.760779][ T375] alloc_worker+0x28/0x60 [ 416.760785][ T375] create_worker+0x4c/0x20c [ 416.760790][ T375] worker_thread+0xe8/0x2b8 [ 416.760796][ T375] kthread+0x1a8/0x200 [ 416.760805][ T375] ret_from_fork+0x10/0x20 Guard the WQ_MEM_RECLAIM-worker warning with worker->current_pwq. If the kworker is not currently executing a work item, there is no current workqueue to diagnose with that warning. The PF_MEMALLOC warning is left unchanged so explicit reclaim context flushing a !WQ_MEM_RECLAIM target is still reported.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|