{"id":33429,"date":"2026-10-06T20:31:59","date_gmt":"2026-10-06T12:31:59","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98360"},"modified":"2026-10-06T20:31:59","modified_gmt":"2026-10-06T12:31:59","slug":"cve-2026-98360","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98360","title":{"rendered":"CVE-2026-98360 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA\/rxe: insert mcg"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RDMA\/rxe: insert mcg into mcg_tree only after rxe_mcast_add() succeeds<\/p>\n<p>rxe_get_mcg() publishes a newly allocated multicast group in<br \/>\nrxe-&gt;mcg_tree before programming the backing Ethernet multicast address<br \/>\nwith rxe_mcast_add(), which runs outside mcg_lock. A local userspace<br \/>\nRDMA client reaches this path with ATTACH_MCAST on a UD QP; if<br \/>\nrxe_mcast_add() then returns an error (for example -ENODEV when the<br \/>\nbacking netdev has been removed, or a propagated dev_mc_add() error),<br \/>\nthe unwind frees the published group without removing it from the tree.<br \/>\nA later lookup of the same MGID dereferences the freed struct rxe_mcg<br \/>\nfrom __rxe_lookup_mcg().<\/p>\n<p>Fix this by keeping the new mcg private until rxe_mcast_add() succeeds.<br \/>\nSplit the tree publication into __rxe_publish_mcg(), call rxe_mcast_add()<br \/>\nbefore taking the tree reference, and free the still-private mcg on<br \/>\nfailure. Because the group is never visible in mcg_tree until the<br \/>\nmulticast address is programmed, no concurrent caller can look it up or<br \/>\nattach a QP to a group that is about to be torn down, so the error path<br \/>\nneeds no conditional unwind. If another caller publishes the same MGID<br \/>\nwhile the address is being programmed, the post-add re-check under<br \/>\nmcg_lock finds the winner; this caller then drops its private object and<br \/>\nbalances its own rxe_mcast_add() with rxe_mcast_del() before returning<br \/>\nthe winner.<\/p>\n<p>Reproduced by forcing the rxe_mcast_add() error return under KASAN:<br \/>\nwithout the change the next attach to the same MGID reports a<br \/>\nslab-use-after-free in __rxe_lookup_mcg(); with it the forced failure<br \/>\nreturns cleanly. A no-injection attach\/detach regression, including a<br \/>\ntwo-QP shared join\/leave and re-attach, stays KASAN- and leak-clean.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RDMA\/rxe: insert mcg into mcg_tree only after rxe_mcast_add() succeeds<\/p>\n<p>rxe_get_mcg() publishes a newly allocated multicast group i<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33429","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33429","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=33429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}