Cloudanix VulnDB

CVE-2026-98537

None

CVSS

—

EPSS

0.2%

Published

Oct 18, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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

  1. Obtain local code execution on a Linux system
  2. Trigger sustained memory pressure to reach OOM paths
  3. Cause kworker to enter worker_thread() pool-manager state
  4. Invoke allocation that reaches out_of_memory() and blocking_notifier_call_chain()
  5. 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