{"id":7133,"date":"2026-09-04T18:49:26","date_gmt":"2026-09-04T10:49:26","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72466"},"modified":"2026-09-04T18:49:26","modified_gmt":"2026-09-04T10:49:26","slug":"cve-2026-72466","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72466","title":{"rendered":"CVE-2026-72466 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nxprtrdma: Fix bcall r"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xprtrdma: Fix bcall rep leak and unbounded peek<\/p>\n<p>rpcrdma_is_bcall() decodes a reply&#8217;s first words to decide whether<br \/>\nthe frame is a backchannel call. Two issues in that decode path<br \/>\nlet a short or malformed reply leak the receive buffer and drain<br \/>\nthe Receive queue.<\/p>\n<p>First, the speculative peek<\/p>\n<p>    p = xdr_inline_decode(xdr, 0);<br \/>\n    \/* five p++ reads follow *\/<\/p>\n<p>asks xdr_inline_decode() for zero bytes, which returns xdr-&gt;p<br \/>\nwithout consulting xdr-&gt;end. The five subsequent __be32 reads can<br \/>\nthen walk up to 20 bytes past the wire payload into stale regbuf<br \/>\ncontents and misclassify the reply as a backchannel call.<\/p>\n<p>Second, after the post-peek<\/p>\n<p>    p = xdr_inline_decode(xdr, 3 * sizeof(*p));<br \/>\n    if (unlikely(!p))<br \/>\n            return true;<\/p>\n<p>the short-header arm returns true without calling<br \/>\nrpcrdma_bc_receive_call(). The contract with the caller is that a<br \/>\ntrue return transfers ownership of rep to the backchannel path:<\/p>\n<p>    rpcrdma_reply_handler()<br \/>\n      if (rpcrdma_is_bcall(r_xprt, rep))<br \/>\n              return;        \/* bare return, skips out_post *\/<br \/>\n      &#8230;<br \/>\n    out_post:<br \/>\n      rpcrdma_post_recvs(r_xprt, credits + &#8230;);<\/p>\n<p>Because rpcrdma_bc_receive_call() never ran, no one took rep, but<br \/>\nrpcrdma_reply_handler still bare-returns past rpcrdma_rep_put()<br \/>\nand rpcrdma_post_recvs(). The rep, with its persistently<br \/>\nDMA-mapped receive buffer, is orphaned on rb_all_reps and freed<br \/>\nonly at transport teardown. This completion reposts nothing, so<br \/>\nits slot is reclaimed only when a later forward-channel reply<br \/>\nreaches out_post and rpcrdma_post_recvs() allocates a fresh rep to<br \/>\nbackfill; absent that traffic the Receive queue drains and the<br \/>\npeer&#8217;s Sends draw RNR NAKs.<\/p>\n<p>Fix by consulting xdr-&gt;end after the zero-length peek so the five<br \/>\n__be32 reads cannot run unless 20 bytes of wire payload remain. A<br \/>\nbyte-precise comparison against xdr-&gt;end is required because a<br \/>\nnon-4-aligned receive rounds the stream&#8217;s word count up past the<br \/>\ntrue payload. Also return false from the short-header arm so the<br \/>\nreply falls through the normal out_norqst cleanup chain<br \/>\n(rpcrdma_rep_put() plus rpcrdma_post_recvs()).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xprtrdma: Fix bcall rep leak and unbounded peek<\/p>\n<p>rpcrdma_is_bcall() decodes a reply&#8217;s first words to decide whether<br \/>\nthe frame is a <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-7133","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/7133","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=7133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}