CVE-2026-99004
NoneCVSS
—
EPSS
0.2%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A driver bug in Linux could let certain graphics hardware requests consume all available memory and crash the whole system.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Integer underflow in device-virtual page table preallocation size calculation within drm/imagination allows a mapping crossing a page table boundary to request a huge number of MMU pages, exhausting memory and triggering an OOM panic.
Why it matters to the business
Systems using Imagination/PowerVR GPUs may experience sudden kernel panics and memory exhaustion from local GPU mapping operations, causing denial of service; the issue is only two days old with low exploit maturity so immediate operational impact is limited but kernel updates remain necessary.
How an attack unfolds
An attacker with access to the GPU mapping interface supplies a device address range that crosses a page table boundary, causing the index difference calculation to underflow and request an enormous quantity of MMU pages that exhausts system memory.
How to fix it
Update the Linux kernel to a version containing commit 0a8224058a58 and the follow-on fix that counts tables from device_addr using an inclusive end; rebuild and reboot with the corrected driver.
How to confirm the fix worked
Confirm the presence of the corrected page table sizing logic in pvr_mmu_op_context_create by inspecting kernel source or running targeted mapping tests that previously caused underflow; verify no excessive MMU page allocations occur on boundary-crossing ranges.
Typical attack path
- Obtain local access to a system with the vulnerable drm/imagination driver
- Issue a GPU device mapping request via the map() interface that spans a page table boundary
- Trigger the underflow in page table index difference inside pvr_mmu_op_context_create
- Force massive MMU page preallocation leading to OOM panic
How to detect it
Search kernel logs and dmesg for OOM killer invocations or panic messages referencing excessive MMU page allocations or pvr_mmu_op_context_create; correlate with GPU mapping syscalls from untrusted processes.
What your security team should do
- Prioritize kernel updates for any hosts exposing Imagination GPUs to untrusted local processes
- Review logs for recent OOM events involving drm or pvr_mmu after applying the fix
- Limit unprivileged access to GPU device nodes until patches are deployed
The record
In the Linux kernel, the following vulnerability has been resolved: drm/imagination: Size page table preallocation by device address Commit 0a8224058a58 ("drm/imagination: Fix page count for page table for map() interface") passed the device address to pvr_mmu_op_context_create(), but the preallocation is still sized from device_addr + sgt_offset with an exclusive end. The offset into the object's pages has no place in a device-virtual range, and the exclusive end allocates one table too many when the range ends on a table boundary. Count the tables from device_addr and the inclusive end of the range. The new calculation does not take page table indices into account. This fixes another issue with the previous implementation, where the difference between start and end indices could underflow when a mapping crossed a page table boundary. This would lead to the driver preallocating a huge number of MMU pages, exhausting system memory and triggering an out of memory panic. [Alessio: add paragraph to point out OOM bug being fixed, cc stable]
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|