drm/amdkfd: fix uint32_t overflow in EOP ring buffer size alignment
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.12.103, 6.18.44, 6.20, 7.1.8
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: fix uint32_t overflow in EOP ring buffer size alignment eop_ring_buffer_size in struct queue_properties is a u32. In kfd_queue_acquire_buffers() the expected EOP buffer size is computed as ALIGN(eop_ring_buffer_size, PAGE_SIZE); ALIGN uses typeof(x), so the addition is done in 32-bit. A user-supplied size of 0xFFFFF001 wraps to 0, causing kfd_queue_buffer_get() to skip its exact-size check (gated on size != 0) and accept any BO mapped at the address. On GFX8/GFX9 the MQD cp_hqd_eop_control is then programmed for an 8KB EOP ring backed by a 4KB BO, so CP EOP writes can land past the buffer and fault the GPU. Cast the operand to u64 so the alignment is computed in 64-bit; the size check in kfd_queue_buffer_get() then rejects the oversized request. (cherry picked from commit ae443117b742c357bfef3a7bddabf76fcf86e9ef)
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From ee0dc6c66a913260311876a4b2b53fe0b9bc3f94 · fixed in 273548eb997c6be85230c1236b18784b09f6203c; From acfc84cfa70aca5b970faf152979bc97b9f8b0c0 · fixed in 6dc0b4b39ed4f11ef70f76ecea8537e35f45342b; From 42ea9cf2f16b7131cb7302acb3dac510968f8bdc · fixed in 7c54bd225d83bc1bcb44430ed4b4d3a5c36b1961; From 42ea9cf2f16b7131cb7302acb3dac510968f8bdc · fixed in 83463a96ea3c7d8ae636a4d6a0ba63c9ce410724; From 6.12.75 · fixed in 6.12.103; From 6.18.16 · fixed in 6.18.44; From 6.19.6 · fixed in 6.20
- Linux Linux
7.0
- KernelLinux
fixed in 6.12.103; From 6.13.0 · fixed in 6.18.44; From 6.19.0 · fixed in 7.1.8