{"id":17279,"date":"2026-09-05T02:30:56","date_gmt":"2026-09-04T18:30:56","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80775"},"modified":"2026-09-05T02:30:56","modified_gmt":"2026-09-04T18:30:56","slug":"cve-2026-80775","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80775","title":{"rendered":"CVE-2026-80775 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nfutex: Fix race on th"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>futex: Fix race on the initial mm-&gt;futex.phash.ref allocation<\/p>\n<p>futex_hash_allocate() allocates mm-&gt;futex.phash.ref without any locking.<br \/>\nCommit d9b05321e21e (&#8220;futex: Move futex_hash_free() back to __mmput()&#8221;)<br \/>\nmoved the allocation here and assumed that the process has just a single<br \/>\nthread at this point.<\/p>\n<p>Commit ee9dce44362b (&#8220;futex: Drop CLONE_THREAD requirement for private<br \/>\ndefault hash alloc&#8221;) widened need_futex_hash_allocate_default() to cover<br \/>\nany CLONE_VM clone, but left out vfork because the parent is suspended and<br \/>\ncannot race.<\/p>\n<p>That no longer holds once vfork is nested. If a vfork child calls vfork<br \/>\nagain and is then killed with SIGKILL, the parent is released from its<br \/>\nvfork wait and runs concurrently with the grandchild in the same mm.<br \/>\nNeither of them went through futex_hash_allocate_default().<\/p>\n<p>When both call prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS) at the same<br \/>\ntime, each one sees mm-&gt;futex.phash.ref as NULL and stores its own percpu<br \/>\ncounter. Only the last store survives. The counter stored first is no<br \/>\nlonger reachable from the mm, so the references on it are not seen by<br \/>\n__futex_ref_atomic_end(). A private hash that still has references is then<br \/>\nconsidered dead and freed, and a task that still holds one of its buckets<br \/>\nwrites into freed memory in futex_q_lock().<\/p>\n<p>Store the counter once with cmpxchg() and let the loser free_percpu() its<br \/>\nown. The initial reference has to be taken before the store, otherwise<br \/>\nanother task can install a private hash while the counter is still 0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>futex: Fix race on the initial mm-&gt;futex.phash.ref allocation<\/p>\n<p>futex_hash_allocate() allocates mm-&gt;futex.phash.ref without any lock<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-17279","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/17279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}