HIGH Introduced in 4.2
amdgpu CsP2IB Overflow
CVE-2026-80576
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
KernelScan AI7.5HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: reject oversized IBs with per-ring packet limits On GFX rings, amdgpu_cs_p2_ib() passed user-supplied ib_bytes through to ib->length_dw without a limit, while ring_emit_ib() encodes length into packet fields. Oversized values can corrupt adjacent control bits and destabilize command submission. Add a per-ring IB packet size limit helper and reject command submissions exceeding the corresponding dword limit before IB allocation. Use the documented 20-bit limit for GFX/compute/SDMA/VPE, and apply the MM fallback limit for other ring types. (cherry picked from commit 7f48fa2cf62e3fa6c9c3870aa74988f773247e52)
02KernelScan AI Analysis
Risk summary
A local user with GPU access can submit oversized indirect buffers via the amdgpu command-stream ioctl, causing the ring packet encoder to write length bits beyond the field boundary and corrupt adjacent control bits in the command stream. This can destabilize GPU command submission and potentially corrupt kernel memory, leading to privilege escalation or denial of service.
Vulnerability analysis
The amdgpu command-stream parser accepted user-supplied indirect buffer sizes without enforcing the hardware packet format's maximum length, so an oversized value was encoded into a fixed-width size field and overflowed into adjacent control bits, corrupting the command submission packet. The fix adds a per-ring-type size limit check that rejects any submission whose dword count exceeds the documented 20-bit maximum before the buffer is allocated. The vulnerable path is reached through the amdgpu DRM ioctl by any local user with access to the GPU device node, requiring no special privileges beyond opening the render node.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 4.2 | 6.12.105 | 6e164ba10571 |
| 6.18 | 4.2 | 6.18.46 | 1474f3970d1a |
| 6.6 | 4.2 | 6.6.160 | 67a5d905c17a |
| 7.1 | 4.2 | 7.1.10 | 07fe270ec07c |
| mainline | 4.2 | 7.2 | fd37f9dd5b5a |
| cip/6.12 | 4.2 | 6.12.108-cip31 | 6e164ba10571 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.108-cip31 |
| cip/6.1 | Affected — no CIP fix yet (latest 6.1.189-cip61) |
| cip/6.1-rt | Affected — no CIP fix yet (latest 6.1.189-cip61-rt32) |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.271-cip78) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |