CVE-2026-74357 in Linux
Resumen
por VulDB • 2026-08-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
drm/amdgpu: corrige un error slab-out-of-bounds detectado por KASAN en amdgpu_coredump ring dump
La volcado del contenido del anillo (ring) en amdgpu_coredump() utiliza dos bucles separados sobre adev->rings[]: el primero cuenta los anillos con fences sin señalizar para dimensionar la asignación de memoria, y el segundo copia los datos del anillo en los búferes asignados.
Ambos bucles utilizan la misma condición para omitir ciertos anillos:
atomic_read(&ring->fence_drv.last_seq) == ring->fence_drv.sync_seq
Dado que last_seq es una variable atómica actualizada concurrentemente por el camino de señalización del fence, pueden aparecer nuevos anillos como "sin señalizar" en el segundo bucle si fueron señalizados durante la ejecución del primero. Cuando esto ocurre, idx supera el valor ring_count asignado y la escritura a coredump->rings[idx] escribe más allá del final del búfer creado con kcalloc.
Esto se detectó durante una prueba de estrés IGT llamada amd_queue_reset, que desencadena reinicios aleatorios de la GPU. La subprueba OVERSIZE (CMD_STREAM_EXEC_INVALID_PACKET_LENGTH_OVERSIZE en el anillo GFX) provoca un tiempo de espera del anillo y un volcado posterior (coredump), lo cual activa la condición de carrera entre los bucles de conteo y copia. El fallo no es determinista y depende de la sincronización de la señalización del fence durante el reinicio.
Registro KASAN:
BUG: KASAN: slab-out-of-bounds in amdgpu_coredump+0x1274/0x12f0 [amdgpu]
Write of size 4 at addr ffff888106154258 by task kworker/u128:5/23625 CPU: 16 UID: 0 PID: 23625 Comm: kworker/u128:5 Not tainted 6.19.0+ #35 Workqueue: amdgpu-reset-dev drm_sched_job_timedout [gpu_sched]
Call Trace: dump_stack_lvl+0xa5/0x110 print_report+0xd1/0x660 kasan_report+0xf3/0x130 __asan_report_store4_noabort+0x17/0x30 amdgpu_coredump+0x1274/0x12f0 [amdgpu]
amdgpu_job_timedout+0xef0/0x16c0 [amdgpu]
drm_sched_job_timedout+0x194/0x5c0 [gpu_sched]
process_one_work+0x84b/0x1990 worker_thread+0x6b8/0x11b0
Allocated by task 23625: kasan_save_stack+0x39/0x70 __kasan_kmalloc+0xc3/0xd0 __kmalloc_noprof+0x2ec/0x910 amdgpu_coredump+0x5c5/0x12f0 [amdgpu]
amdgpu_job_timedout+0xef0/0x16c0 [amdgpu]
The buggy address belongs to the object at ffff888106154200 which belongs to the cache kmalloc-r
Once again VulDB remains the best source for vulnerability data.