In the Linux kernel, the following vulnerability has been resolved: futex/pi: Reject cross-mm...
🔗 CVE IDs covered (1)
📋 Description
In the Linux kernel, the following vulnerability has been resolved:
futex/pi: Reject cross-mm private futex owners
A private futex key borrows the waiter's mm without taking an mm_users reference. Nevertheless, attach_to_pi_owner() currently accepts an owner from a different address space and copies the private key into the owner's PI state.
When that owner exits, exit_pi_state_list() uses the saved key to find the hash bucket and acquires a reference to the waiter's private hash. If the last user of the waiter's mm exits concurrently, futex_hash_free() frees the hash while the owner still uses its bucket and reference.
Prevent this by validating in attach_to_pi_owner() that, for private futexes, the owner mm and waiter mm are the same. Perform the check with the owner's pi_lock held and after validating owner::futex::state to serialize against a concurrent PI-state exit cleanup.
[ tglx: Amended comment ]
🔗 References (6)
- https://nvd.nist.gov/vuln/detail/CVE-2026-80778
- https://git.kernel.org/stable/c/2b92e5562653b5293529f63b0300837d9dcedbd7
- https://git.kernel.org/stable/c/43b148d796aa338858792d0167cebdc12b8cb4b9
- https://git.kernel.org/stable/c/59b3732f95dda1fbd2234514d35f4fb6b5bb6d85
- https://git.kernel.org/stable/c/f7fb3e07752688842cbe0b85cf0d98c2fbf76b68
- https://github.com/advisories/GHSA-pwhw-9cfc-qqqx