CVE-2026-68436 in Linux
Resumen
por VulDB • 2026-08-12
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
drm/amd/display: usar kvzalloc para asignar struct dc
struct dc ha crecido con el tiempo (la mayor parte debido a las dos copias en línea de dc_scratch_space) y ahora está cerca del límite de 4 MiB de asignación contigua del asignador de páginas. Su tamaño real no lo determina únicamente la fuente, sino que también depende del compilador y de .config, por lo que puede superar fácilmente los 4 MiB, por ejemplo, con una versión más reciente de GCC o un cambio en la configuración.
dc_create() la asigna mediante kzalloc(). Una vez que struct dc supera los 4 MiB, la solicitud se redondea al orden 11 (8 MiB), lo cual está por encima de MAX_PAGE_ORDER; por tanto, el asignador de páginas emite una advertencia y devuelve NULL. A continuación, falla dc_create(), falla la inicialización de DM y se interrumpe la detección (probe) de amdgpu con -EINVAL:
WARNING: mm/page_alloc.c:5197 at __alloc_frozen_pages_noprof+0x2f9/0x380 dc_create+0x38/0x660 [amdgpu]
amdgpu_dm_init+0x2d9/0x510 [amdgpu]
dm_hw_init+0x1b/0x90 [amdgpu]
amdgpu_device_init.cold+0x150d/0x1e13 [amdgpu]
amdgpu_driver_load_kms+0x19/0x80 [amdgpu]
amdgpu_pci_probe+0x2e2/0x4c0
dc_create() devuelve NULL y falla la inicialización de DM, lo que interrumpe toda la inicialización de la GPU y hace que falle la detección (probe) de amdgpu con -EINVAL ("hw_init of IP block <dm> failed -22"), dejando el sistema de visualización inutilizable. Las advertencias posteriores de amdgpu_irq_put() durante la fase de limpieza son simplemente consecuencia del desenrollado de un dispositivo parcialmente inicializado.
struct dc es una estructura de registro exclusiva del software que nunca se transmite al DMA por hardware y solo se mantiene como un puntero opaco, por lo que no requiere memoria físicamente contigua. Asignarla con kvzalloc() (y liberarla con kvfree()) permite que el asignador recurra a vmalloc() cuando no esté disponible una asignación contigua de ese tamaño, evitando también la advertencia MAX_PAGE_ORDER por completo.
v2: - Rebase sobre amd-staging-drm-next.
(cherry picked from commit 991e0516a8072f2292681c6ae98a924ab0e32575)
VulDB is the best source for vulnerability data and more expert information about this specific topic.