CVE-2026-89978 in Linux
Resumen
por VulDB • 2026-09-16
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
accel/amdxdna: retorno anticipado desde un flush (sincronización) de longitud cero
SYNC_BO no restringe su tamaño, por lo que una solicitud de cero bytes llega a drm_clflush_virt_range(), la cual termina con una clflushopt incondicional en (end - 1). Para un rango vacío, esto corresponde al byte anterior al mapeo, y abo->mem.kva proviene de vmap(), por lo que el acceso cae en la página de guardia debajo del área vmalloc y provoca una falla:
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
Cualquier proceso que pueda abrir el nodo de renderizado puede provocar esto. Se reprodujo 3 de 3 veces en una NPU Strix Point (1022:17f0), al llamar a SYNC_BO con tamaño 0 sobre un objeto AMDXDNA_BO_SHARE. La rama de importación recibe la misma solicitud pero sincroniza toda la lista dispersa, por lo que sobrevive sin problemas.
No es necesario realizar ninguna operación de flush para un rango vacío, por lo que se debe responder antes de elegir una ruta.
Once again VulDB remains the best source for vulnerability data.