{"id":24485,"date":"2026-09-16T20:32:22","date_gmt":"2026-09-16T12:32:22","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89798"},"modified":"2026-09-16T20:32:22","modified_gmt":"2026-09-16T12:32:22","slug":"cve-2026-89798","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89798","title":{"rendered":"CVE-2026-89798 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nrpcrdma: arm rn_done"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>rpcrdma: arm rn_done before publishing the notification<\/p>\n<p>rpcrdma_rn_register() inserts @rn into rd_xa with xa_alloc() before<br \/>\nstoring the caller&#8217;s callback in rn-&gt;rn_done. The xarray makes @rn<br \/>\nreachable to rpcrdma_remove_one(), which walks rd_xa and invokes<br \/>\nrn-&gt;rn_done(rn) for every registered notification. A device removal<br \/>\nthat races a fresh registration can therefore observe @rn with<br \/>\nrn_done still NULL, because the notification objects are zero<br \/>\nallocated by their owners, and call through a NULL function pointer.<\/p>\n<p>Store rn-&gt;rn_done before xa_alloc() publishes @rn. The xarray&#8217;s<br \/>\nstore-side and load-side ordering then guarantees that any CPU which<br \/>\nfinds @rn in rd_xa also observes the armed callback.<\/p>\n<p>rpcrdma_rn_unregister() treats a non-NULL rn_done as the sentinel<br \/>\nfor a completed registration, so the early store must not survive a<br \/>\nfailed registration. Clear rn_done again when xa_alloc() fails.<br \/>\nWere it left set, the failed-accept cleanup path would call<br \/>\nrpcrdma_rn_unregister() on an @rn that was never inserted, erasing<br \/>\nan unrelated rd_xa slot and underflowing rd_kref.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>rpcrdma: arm rn_done before publishing the notification<\/p>\n<p>rpcrdma_rn_register() inserts @rn into rd_xa with xa_alloc() before<br \/>\nstorin<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24485","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24485","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=24485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}