{"id":29099,"date":"2026-09-25T20:31:52","date_gmt":"2026-09-25T12:31:52","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97943"},"modified":"2026-09-25T20:31:52","modified_gmt":"2026-09-25T12:31:52","slug":"cve-2026-97943","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97943","title":{"rendered":"CVE-2026-97943 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nx86\/mm\/pat: Acquire i"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>x86\/mm\/pat: Acquire init_mm write lock on collapse to avoid UAF<\/p>\n<p>x86 implements page attribute modification using its Change Page<br \/>\nAttributes (CPA) mechanism.<\/p>\n<p>This tracks properties of ranges such as cache mode through x86 page<br \/>\nattributes, and as part of that logic manipulates kernel page tables.<\/p>\n<p>Since commit:<\/p>\n<p>  41d88484c71c (&#8220;x86\/mm\/pat: restore large ROX pages after fragmentation&#8221;)<\/p>\n<p>ranges of kernel page table entries can be collapsed into<br \/>\nhuge page table entries as part of this logic.<\/p>\n<p>As part of this collapse, it frees the page tables which the collapsed<br \/>\nentries previously pointed to, and it does so without any relevant locks<br \/>\nbeing held to preclude concurrent kernel page table walkers.<\/p>\n<p>The only way this code can be reached is if CPA_COLLAPSE is specified, and<br \/>\nthis is only set in set_memory_rox() via:<\/p>\n<p>set_memory_rox()<br \/>\n-&gt; change_page_attr_set_clr()<br \/>\n-&gt; cpa_flush()<br \/>\n-&gt; cpa_collapse_large_pages()<\/p>\n<p>Notable users of this are execmem and BPF when manipulating executable<br \/>\nmappings.<\/p>\n<p>However, this is problematic for ptdump as it walks ranges it does not own<br \/>\nand thus runs the risk of a use-after-free on page tables freed underneath<br \/>\nit.<\/p>\n<p>In addition, concurrent CPA collapse operations are possible which can also<br \/>\ncause races.<\/p>\n<p>Resolve the issue by acquiring the mmap write lock on init_mm across the<br \/>\nwhole operation.<\/p>\n<p>It is safe to acquire a sleeping lock as all the callers invoke<br \/>\nset_memory_rox() from process context and in any case,<br \/>\nchange_page_attr_set_clr() calls vm_unmap_alias() which ultimately takes a<br \/>\nmutex, disallowing atomic context here.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>x86\/mm\/pat: Acquire init_mm write lock on collapse to avoid UAF<\/p>\n<p>x86 implements page attribute modification using its Change Page<br \/>\nA<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29099","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29099","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=29099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}