Linux: futex: Fix mm reuse handling for FUT_OFF_MMSHARED
What fixes it
- 2855ddc6844f527e375e78afb55ec2a5182f23b3LinuxCVE List
- 3267512ad1c2cc0c7768c5b014dc2cceb398a801LinuxCVE 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:
futex: Fix mm reuse handling for FUT_OFF_MMSHARED
A FUT_OFF_MMSHARED futex is a shared futex that refers to an MM. It is possible for a process to wait on a shared futex with a different MM because a FUT_OFF_INODE waiter can be requeued onto a FUT_OFF_MMSHARED futex by another process. This can cause FUT_OFF_MMSHARED waiters on a freed MM to consume wakeups intended for a newly allocated MM at the same address.
Fix it by keying FUT_OFF_MMSHARED using a unique 64-bit per-MM ID. Leave private futexes as before to avoid influencing the performance of the hotpath.
(Multi-threaded processes typically implicitly use FUT_OFF_MMSHARED by setting clear_child_tid such that it points into anonymous memory, which causes mm_release() in a multi-threaded mm to perform FUTEX_WAKE.)
Text from CVE List
Affected versions 8
- Linuxaffected: 222993395ed38f3751287f4bd82ef46b3eb3a66d before c17cc2027773e8e4913c5ab0fe3a489b1ed5bf81CVE List
- Linuxaffected: 222993395ed38f3751287f4bd82ef46b3eb3a66d before 2855ddc6844f527e375e78afb55ec2a5182f23b3CVE List
- Linuxaffected: 222993395ed38f3751287f4bd82ef46b3eb3a66d before 3267512ad1c2cc0c7768c5b014dc2cceb398a801CVE List
- Linuxaffected: 5.7CVE List
- Linuxunaffected: all versions before 5.7CVE List
- Linuxunaffected: 6.18.59 through 6.18.*CVE List
- Linuxunaffected: 7.2.13 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List