CVE-2026-98537 in Linux信息

摘要

由 VulDB • 2026-10-18

在 Linux 内核中,已修复以下漏洞:

workqueue: 修复 flush 依赖检查中的 NULL current_pwq 解引用问题

check_flush_dependency() 使用 current_wq_worker() 来确定调用者是否为 workqueue worker,然后对 worker->current_pwq 进行解引用以测试当前 workqueue 是否为 WQ_MEM_RECLAIM。

current_wq_worker() 仅表示 %current 设置了 PF_WQ_WORKER 标志。kworker 可以在未执行工作项的情况下到达 check_flush_dependency()。其中一条路径是作为池管理器的 worker_thread(),在此处 create_worker() 进行 GFP_KERNEL 分配,且该分配路径会调用 OOM notifier。在这种状态下,worker->current_pwq 为 NULL,因为 current_pwq 仅由 process_one_work() 设置,并在工作函数返回后再次清除。

[ 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

对 WQ_MEM_RECLAIM-worker 警告使用 worker->current_pwq 进行保护。如果 kworker 当前未执行工作项,则没有当前的 workqueue 可用于通过该警告进行诊断。PF_MEMALLOC 警告保持不变,因此显式回收上下文刷新非 WQ_MEM_RECLAIM 目标的情况仍会被报告。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Want to know what is going to be exploited?

We predict KEV entries!