{"id":33435,"date":"2026-10-06T20:32:00","date_gmt":"2026-10-06T12:32:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98366"},"modified":"2026-10-06T20:32:00","modified_gmt":"2026-10-06T12:32:00","slug":"cve-2026-98366","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98366","title":{"rendered":"CVE-2026-98366 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA\/rxe: validate ac"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RDMA\/rxe: validate access flags before swapping the MR&#8217;s PD<\/p>\n<p>rxe_rereg_user_mr() reassigns mr-&gt;ibmr.pd first and only then<br \/>\nvalidates the IB_MR_REREG_ACCESS argument:<\/p>\n<p>\tif (flags &amp; IB_MR_REREG_PD) {<br \/>\n\t\trxe_put(old_pd);<br \/>\n\t\trxe_get(pd);<br \/>\n\t\tmr-&gt;ibmr.pd = ibpd;<br \/>\n\t}<\/p>\n<p>\tif (flags &amp; IB_MR_REREG_ACCESS) {<br \/>\n\t\tif (access &amp; ~RXE_ACCESS_SUPPORTED_MR)<br \/>\n\t\t\treturn ERR_PTR(-EOPNOTSUPP);<br \/>\n\t\tmr-&gt;access = access;<br \/>\n\t}<\/p>\n<p>Both flags pass the entry check because RXE_MR_REREG_SUPPORTED is<br \/>\nIB_MR_REREG_PD | IB_MR_REREG_ACCESS, so a caller can reach the access<br \/>\ncheck with mr-&gt;ibmr.pd already reassigned.<\/p>\n<p>mr-&gt;ibmr.pd is owned by the core, which adjusts pd-&gt;usecnt only on the<br \/>\nsuccess path: ib_uverbs_rereg_mr() jumps to put_new_uobj on a driver error<br \/>\nwithout undoing the reassignment, so mr-&gt;pd == new_pd while the usecnts<br \/>\nstill charge the MR to orig_pd. ib_dereg_mr_user() then decrements<br \/>\nnew_pd, whose count can reach zero while a memory window still references<br \/>\nit; uverbs_free_pd() frees the PD on that count alone and rxe_mw_cleanup()<br \/>\nwrites to freed memory:<\/p>\n<p>  BUG: KASAN: slab-use-after-free in __rxe_put+0x31\/0xa0<br \/>\n  Write of size 4 at addr ffff8881301dd690 by task rxe_poc\/591<br \/>\n   __rxe_put+0x31\/0xa0<br \/>\n   rxe_mw_cleanup+0x42\/0x200<br \/>\n   __rxe_cleanup+0x115\/0x370<br \/>\n   rxe_dealloc_mw+0x4c\/0x80<br \/>\n  Allocated by task 591:<br \/>\n   ib_uverbs_alloc_pd+0x258\/0x540<br \/>\n  Freed by task 591:<br \/>\n   ib_dealloc_pd_user+0x174\/0x210<br \/>\n   uverbs_free_pd+0x8d\/0xc0<br \/>\n   ib_uverbs_dealloc_pd+0x18e\/0x1d0<\/p>\n<p>Validate the access flags before mutating any state so the callback either<br \/>\napplies every requested change or none.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RDMA\/rxe: validate access flags before swapping the MR&#8217;s PD<\/p>\n<p>rxe_rereg_user_mr() reassigns mr-&gt;ibmr.pd first and only then<br \/>\nvalidate<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33435","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33435","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=33435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}