{"id":25925,"date":"2026-09-18T04:32:05","date_gmt":"2026-09-17T20:32:05","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93066"},"modified":"2026-09-18T04:32:05","modified_gmt":"2026-09-17T20:32:05","slug":"cve-2026-93066","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93066","title":{"rendered":"CVE-2026-93066 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nx86\/mm\/pat: Take cpa_"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>x86\/mm\/pat: Take cpa_lock around large-page collapse<\/p>\n<p>Loading and unloading modules concurrently on several CPUs on a KASAN<br \/>\nbuild, with a short delay injected at the CPA page-table lookup to<br \/>\nwiden the window, faults within minutes:<\/p>\n<p>  BUG: KASAN: use-after-free in __change_page_attr+0x7cc\/0x7e0<br \/>\n  Write of size 8 at addr ffff888181139718 by task modprobe<br \/>\n  &#8230;<br \/>\n  The buggy address belongs to the physical page:<br \/>\n   pfn:0x181139 &#8230; page_type: f2(table)<\/p>\n<p>cpa_collapse_large_pages() rebuilds a leaf PMD from its 4K PTEs and<br \/>\nfrees the old PTE-table pages, while __change_page_attr() fetches a<br \/>\nPTE pointer from a lockless lookup_address_in_pgd_attr() and writes<br \/>\nit with set_pte_atomic() only later. When module text is served from<br \/>\na shared large ROX mapping the two run on the same PMD:<\/p>\n<p>  CPU A (module load)              CPU B (module finalize)<br \/>\n  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-              &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n  execmem_make_temp_rw<br \/>\n   set_memory_nx<br \/>\n    __change_page_attr<br \/>\n     split 2M -&gt; 4K table P<br \/>\n     kpte = &amp;P[i]  (lockless)<br \/>\n                                   execmem_restore_rox<br \/>\n                                    set_memory_rox (CPA_COLLAPSE)<br \/>\n                                     cpa_collapse_large_pages<br \/>\n                                      rebuild leaf PMD<br \/>\n                                      flush_tlb_all<br \/>\n                                      pagetable_free(P)<br \/>\n     set_pte_atomic(kpte, &#8230;)<br \/>\n       -&gt; writes into freed P<\/p>\n<p>P is a page-table page (page_type: table), reused at once, so the<br \/>\nwrite corrupts whatever got the page next: a bad-pte or bad-page<br \/>\nsplat, or a fatal fault once P has been turned into read-only text.<\/p>\n<p>The flush_tlb_all() before the free does not close this: its IPI only<br \/>\nserializes against page-table walkers that run with interrupts off<br \/>\n(e.g. GUP-fast); the walk in __change_page_attr() runs with interrupts<br \/>\non, so nothing stops it from holding a stale pointer into P.<\/p>\n<p>Serialize the collapse &#8211; the PMD rebuild, TLB flush and PTE-table<br \/>\nfree &#8211; under cpa_lock, the same lock __change_page_attr() now takes<br \/>\nunconditionally since commit (&#8220;x86\/mm\/pat: stop gating cpa_lock on<br \/>\ndebug_pagealloc_enabled()&#8221;), so a concurrent walker can no longer<br \/>\nhold a pointer into a table the collapse is about to free.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>x86\/mm\/pat: Take cpa_lock around large-page collapse<\/p>\n<p>Loading and unloading modules concurrently on several CPUs on a KASAN<br \/>\nbuild, <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25925","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25925","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=25925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}