Executive brief
The Linux kernel's AMD GPU display driver fails to initialize on certain configurations where internal data structures exceed memory allocation limits, rendering the display unusable and preventing the GPU from being recognized by the system. This issue occurs due to rigid memory allocation constraints that don't account for variable structure sizes across different compiler and kernel configurations.
Technical details
The vulnerability is a resource exhaustion / denial of service condition in the amdgpu display (DRM/display) subsystem. The `dc_create()` function in `drm/amd/display` allocates the `struct dc` bookkeeping structure using `kzalloc()`, which requires physically contiguous memory. As the structure has grown over time (particularly due to inlined `dc_scratch_space` copies), it can exceed the kernel page allocator's contiguous allocation limit (approximately 4 MiB), causing allocation failures and a cascade of init failures. The fix replaces `kzalloc()`/`kfree()` with `kvzalloc()`/`kvfree()`, allowing the allocator to fall back to vmalloc when contiguous memory is unavailable. Attack vector is local/physical (requires system boot/driver initialization). No privilege escalation or data exposure; impact is denial of service (device unavailability). Patch is available in the upstream Linux kernel.
Affected products
- Linux Linux kernel versions with amdgpu display driver where struct dc exceeds contiguous allocation limits
Timeline
- 2026-08-12: disclosed
- 2026-08-12: patched: cherry-picked from commit 991e0516a8072f2292681c6ae98a924ab0e32575