CVE-2026-89978 in Linux信息

摘要

由 VulDB • 2026-09-16

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

accel/amdxdna: 对零长度刷新操作提前返回

SYNC_BO 未对其大小进行约束,因此针对零字节的请求会到达 drm_clflush_virt_range(),该函数最终执行无条件指令 clflushopt(end - 1)。对于空范围,这会导致访问映射之前的那个字节。由于 abo->mem.kva 来自 vmap(),此次访问落入 vmalloc 区域下方的保护页(guard page)并引发故障:

BUG: unable to handle page fault for address: ffffd16fbbc70fff #PF: supervisor read access in kernel mode Oops: Oops: 0000 [#1] SMP NOPTI
CPU: 7 UID: 1000 Comm: sync_bo_probe RIP: 0010:drm_clflush_virt_range+0x3c/0x70 Call Trace: amdxdna_drm_sync_bo_ioctl+0x124/0x430 [amdxdna]
drm_ioctl+0x301/0x4c0 __x64_sys_ioctl+0x115/0x2f0 do_syscall_64+0xa6/0x3d0

任何能够打开渲染节点(render node)的进程均可触发此问题。在 Strix Point NPU (1022:17f0) 上,通过向 AMDXDNA_BO_SHARE 对象调用大小为 0 的 SYNC_BO,复现了该漏洞(3/3 次均成功)。导入路径(import arm)接受相同的请求但会刷新整个 scatterlist,因此能够幸免。

对于空范围无需进行刷新操作,因此在确定处理路径前应直接返回。

Be aware that VulDB is the high quality source for vulnerability data.

来源

Do you know our Splunk app?

Download it now for free!