Linux: drm/amdkfd: Fix OOB memory exposure in get_wave_state()
What fixes it
- 7ef144458f48d5589e36f1b3d83e83db2e5c5ba5LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: Fix OOB memory exposure in get_wave_state()
The get_wave_state() function for v9 trusts cp_hqd_cntl_stack_size and cp_hqd_cntl_stack_offset values read directly from the MQD, which are written by GPU microcode and fully attacker-controlled on the CRIU-restore path (via AMDKFD_IOC_RESTORE_PROCESS with H3).
this leads to an unbounded copy_to_user() that can leak adjacent GTT/kernel memory. If offset > size, integer underflow produces a ~4 GiB read length, if size is set to 1 MiB against a 4 KiB allocation, we leak 1 MiB of adjacent kernel memory (other queues' MQDs, ring buffers, KASLR pointers).
Fix by clamping both cp_hqd_cntl_stack_size to the actual allocated buffer size (q->ctl_stack_size) and cp_hqd_cntl_stack_offset to the clamped size before performing arithmetic and copy_to_user().
This ensures we never read beyond the allocated kernel BO regardless of attacker-supplied MQD field values.
Text from CVE List
Affected versions 10
- Linuxaffected: 42c6c48214b726c30918e8dc80e2168607d13ae4 before e2bef0f168be46692a6b900916ff5da3771480edCVE List
- Linuxaffected: 42c6c48214b726c30918e8dc80e2168607d13ae4 before d9183d974ddd5f09d029beaf359275ac20d4d5feCVE List
- Linuxaffected: 42c6c48214b726c30918e8dc80e2168607d13ae4 before ec646686613d8ab05b282d1463a7baa49fd6b83bCVE List
- Linuxaffected: 42c6c48214b726c30918e8dc80e2168607d13ae4 before 7ef144458f48d5589e36f1b3d83e83db2e5c5ba5CVE List
- Linuxaffected: 5.18CVE List
- Linuxunaffected: all versions before 5.18CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2CVE List
References 4
- git.kernel.org/stable/c/e2bef0f168be46692a6b900916ff5da3771480edReferencevia CVE List
- git.kernel.org/stable/c/d9183d974ddd5f09d029beaf359275ac20d4d5feReferencevia CVE List
- git.kernel.org/stable/c/ec646686613d8ab05b282d1463a7baa49fd6b83bReferencevia CVE List
- git.kernel.org/stable/c/7ef144458f48d5589e36f1b3d83e83db2e5c5ba5Referencevia CVE List