drm/amdgpu: fix lifetime issue of amdgpu_vm_get_task_info_pasid()
- 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.7, 6.12.101, 6.18.42, 7.1.6
- 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/amdgpu: fix lifetime issue of amdgpu_vm_get_task_info_pasid() The vm pointer returned from amdgpu_vm_get_vm_from_pasid() is only valid while the lock is still being held. Once xa_unlock_irqrestore is called and returned, the pointer is no longer under lock and is subject to modification. Since, the caller still dereferences vm->task_info in amdgpu_vm_get_task_info_vm() after the lock is removed, this causes a use after unlock problem. Remove the lifetime issue present in amdgpu_vm_get_task_info_pasid() through removing the amdgpu_vm_get_vm_from_pasid() function from amdgpu_vm.c and making the relevant code inline to hold the lock while it is still in use. (cherry picked from commit 9d01579f3f868b333acc901815972685989092c7)
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From b8f67b9ddf4f8fe6dd536590712b5912ad78f99c · fixed in fe16a7e5336ae888751984e30c451fbf7cfa5df7; From b8f67b9ddf4f8fe6dd536590712b5912ad78f99c · fixed in 1173190412fb9d12e7efce76734118d9712ff970; From b8f67b9ddf4f8fe6dd536590712b5912ad78f99c · fixed in 5d5fb9124a2bba96a7807086d8fe0f7ce810d546; From b8f67b9ddf4f8fe6dd536590712b5912ad78f99c · fixed in 04cc4aa3617b0ed67e859f91f09de5d896a46f3a; From 6.6.160 · fixed in 6.7
- Linux Linux
6.9
- KernelLinux
From 6.9.0 · fixed in 6.12.101; From 6.13.0 · fixed in 6.18.42; From 6.19.0 · fixed in 7.1.6