Description
In the Linux kernel, the following vulnerability has been resolved: rtmutex: Use waiter::task instead of current in remove_waiter() remove_waiter() is used by the slowlock paths, but it is also used for proxy-lock rollback in rt_mutex_start_proxy_lock() when invoked from futex_requeue(). In the latter case waiter::task is not current, but remove_waiter() operates on current for the dequeue operation. That results in several problems: 1) the rbtree dequeue happens without waiter::task::pi_lock being held 2) the waiter task's pi_blocked_on state is not cleared, which leaves a dangling pointer primed for UAF around. 3) rt_mutex_adjust_prio_chain() operates on the wrong top priority waiter task Use waiter::task instead of current in all related operations in remove_waiter() to cure those problems. [ tglx: Fixup rt_mutex_adjust_prio_chain(), add a comment and amend the changelog ]
Product status
8161239a8bcce9ad6b537c04a1fa3b5c68bae693 (git) before d8cce4773c2b23d819baf5abedc62f7b430e8745
8161239a8bcce9ad6b537c04a1fa3b5c68bae693 (git) before 8a1fc8d698ac5e5916e3082a0f74450d71f9611f
8161239a8bcce9ad6b537c04a1fa3b5c68bae693 (git) before 6d52dfcb2a5db86e346cf51f8fcf2071b8085166
8161239a8bcce9ad6b537c04a1fa3b5c68bae693 (git) before 3fb7394a837740770f0d6b4b30567e60786a63f2
8161239a8bcce9ad6b537c04a1fa3b5c68bae693 (git) before 88614876370aac8ad1050ad785a4c095ba17ac11
8161239a8bcce9ad6b537c04a1fa3b5c68bae693 (git) before 3bfdc63936dd4773109b7b8c280c0f3b5ae7d349
2.6.39
Any version before 2.6.39
6.1.175 (semver)
6.6.140 (semver)
6.12.86 (semver)
6.18.27 (semver)
7.0.4 (semver)
7.1-rc1 (original_commit_for_fix)
References
git.kernel.org/...c/d8cce4773c2b23d819baf5abedc62f7b430e8745
git.kernel.org/...c/8a1fc8d698ac5e5916e3082a0f74450d71f9611f
git.kernel.org/...c/6d52dfcb2a5db86e346cf51f8fcf2071b8085166
git.kernel.org/...c/3fb7394a837740770f0d6b4b30567e60786a63f2
git.kernel.org/...c/88614876370aac8ad1050ad785a4c095ba17ac11
git.kernel.org/...c/3bfdc63936dd4773109b7b8c280c0f3b5ae7d349