rapidio: mport_cdev: fix use-after-free in dma_req_free()
- 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 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, and 2 more
- 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
Summary
In the Linux kernel, the following vulnerability has been resolved: rapidio: mport_cdev: fix use-after-free in dma_req_free() dma_req_free() acquires buf_mutex through req->map, drops the mapping reference with kref_put(), and then dereferences req->map again to unlock the mutex. If kref_put() drops the last reference, mport_release_mapping() frees the mapping, and the subsequent mutex_unlock() dereferences a freed object. This is a use-after-free. Fix this by caching map and md before kref_put(), clearing req->map while holding buf_mutex, and using the cached md for mutex unlocking. The bug is reachable from userspace via the RapidIO mport character device interface.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in 00c5ed913b0dc563fbeb8a97ea8916c03bbbbf6a; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in fc79c07cdcde02c5b17633d78777de6ac2c14b29; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in 26ccfe7d69e27b0d933ae0a64a23a0cb9b9a85a6; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in bd8881c24a9520f9c3d3e855d866197f63e471a7; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in 9a9929ec875ff20922c90c96fd544ae8a2a61a8d; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in e6e925cc1f8067c65c7bec3da50a0ead3b3ef4e0; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in 211c68d817a3d9dc14c0026a59da7cac30f8147e; From e8de370188d098bb49483c287b44925957c3c9b6 · fixed in 5cbef379a94b161726c5f504598bf4791d45cedc
- Linux Linux
4.6
- KernelLinux
From 4.6.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.109; From 6.13.0 · fixed in 6.18.50; From 6.19.0 · fixed in 7.2.4
References 8
git.kernel.org
- stable/c/00c5ed913b0dc563fbeb8a97ea8916c03bbbbf6a
- stable/c/fc79c07cdcde02c5b17633d78777de6ac2c14b29
- stable/c/26ccfe7d69e27b0d933ae0a64a23a0cb9b9a85a6
- stable/c/bd8881c24a9520f9c3d3e855d866197f63e471a7
- stable/c/9a9929ec875ff20922c90c96fd544ae8a2a61a8d
- stable/c/e6e925cc1f8067c65c7bec3da50a0ead3b3ef4e0
- stable/c/211c68d817a3d9dc14c0026a59da7cac30f8147e
- stable/c/5cbef379a94b161726c5f504598bf4791d45cedc