CVE-2025-40288
Description
In the Linux kernel, the following vulnerability has been resolved:
drm/amdgpu: Fix NULL pointer dereference in VRAM logic for APU devices
Previously, APU platforms (and other scenarios with uninitialized VRAM managers) triggered a NULL pointer dereference in ttm_resource_manager_usage(). The root cause is not that the struct ttm_resource_manager *man pointer itself is NULL, but that man->bdev (the backing device pointer within the manager) remains uninitialized (NULL) on APUs—since APUs lack dedicated VRAM and do not fully set up VRAM manager structures. When ttm_resource_manager_usage() attempts to acquire man->bdev->lru_lock, it dereferences the NULL man->bdev, leading to a kernel OOPS.
1. amdgpu_cs.c: Extend the existing bandwidth control check in amdgpu_cs_get_threshold_for_moves() to include a check for ttm_resource_manager_used(). If the manager is not used (uninitialized bdev), return 0 for migration thresholds immediately—skipping VRAM-specific logic that would trigger the NULL dereference.
2. amdgpu_kms.c: Update the AMDGPU_INFO_VRAM_USAGE ioctl and memory info reporting to use a conditional: if the manager is used, return the real VRAM usage; otherwise, return 0. This avoids accessing man->bdev when it is NULL.
3. amdgpu_virt.c: Modify the vf2pf (virtual function to physical function) data write path. Use ttm_resource_manager_used() to check validity: if the manager is usable, calculate fb_usage from VRAM usage; otherwise, set fb_usage to 0 (APUs have no discrete framebuffer to report).
This approach is more robust than APU-specific checks because it: - Works for all scenarios where the VRAM manager is uninitialized (not just APUs), - Aligns with TTM's design by using its native helper function, - Preserves correct behavior for discrete GPUs (which have fully initialized man->bdev and pass the ttm_resource_manager_used() check).
v4: use ttm_resource_manager_used(&adev->mman.vram_mgr.manager) instead of checking the adev->gmc.is_app_apu flag (Christian)
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A NULL pointer dereference in the Linux kernel's AMDGPU DRM driver, triggered on APU devices when accessing uninitialized VRAM manager structures, leading to a kernel OOPS.
Vulnerability
Overview
CVE-2025-40288 describes a NULL pointer dereference vulnerability in the Linux kernel's AMDGPU Direct Rendering Manager (DRM) driver. The bug occurs in the VRAM memory management logic, specifically within the ttm_resource_manager_usage() function. On APU (Accelerated Processing Unit) platforms, which lack dedicated VRAM, the VRAM manager's backing device pointer (man->bdev) remains uninitialized (NULL). When ttm_resource_manager_usage() attempts to acquire man->bdev->lru_lock, it dereferences this NULL pointer, causing a kernel OOPS [1][2].
Exploitation and
Attack Surface
An attacker with local access to a system running an affected Linux kernel version can trigger this vulnerability by performing operations that query VRAM usage or initiate memory migration. Specifically, the vulnerable code paths are invoked via the AMDGPU_INFO_VRAM_USAGE ioctl, the bandwidth control check in amdgpu_cs_get_threshold_for_moves(), and the virtual function to physical function (vf2pf) data write path. No special privileges beyond local user access are required to trigger the NULL pointer dereference [3][4].
Impact
Successful exploitation results in a kernel NULL pointer dereference, leading to a system crash (kernel OOPS) and denial of service. This can cause instability or complete system unavailability for affected APU-based systems. The vulnerability does not appear to allow privilege escalation or arbitrary code execution based on the available information [1][2].
Mitigation
The fix has been applied to the Linux kernel stable tree in multiple stable kernel branches. The patch introduces a check using ttm_resource_manager_used() before accessing the VRAM manager's backing device, ensuring that uninitialized managers are handled gracefully by returning zero usage values instead of dereferencing a NULL pointer. Users should update their kernel to a version containing the commit that resolves this issue [3][4].
AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
2Patches
5e70113b741ba1243e396148a43aa61c18a3a070bdce18fb1883f309add55Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- git.kernel.org/stable/c/070bdce18fb12a49eb9c421e57df17d2ad29bf5fnvd
- git.kernel.org/stable/c/1243e396148a65bb6c42a2b70fe43e50c16c494fnvd
- git.kernel.org/stable/c/43aa61c18a3a45042b098b7a1186ffb29364002cnvd
- git.kernel.org/stable/c/883f309add55060233bf11c1ea6947140372920fnvd
- git.kernel.org/stable/c/e70113b741ba253886cd71dbadfe3ea444bb2f5cnvd
News mentions
0No linked articles in our index yet.