{"id":6845,"date":"2026-09-04T18:49:19","date_gmt":"2026-09-04T10:49:19","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72221"},"modified":"2026-09-04T18:49:19","modified_gmt":"2026-09-04T10:49:19","slug":"cve-2026-72221","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72221","title":{"rendered":"CVE-2026-72221 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nsunrpc: wait for in-f"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>sunrpc: wait for in-flight TLS handshake callback when cancel loses race<\/p>\n<p>When wait_for_completion_interruptible_timeout() in<br \/>\nsvc_tcp_handshake() returns 0 (timeout) or -ERESTARTSYS (signal) and<br \/>\ntls_handshake_cancel() then returns false, handshake_complete() has<br \/>\nwon the cancellation race: it has set HANDSHAKE_F_REQ_COMPLETED and<br \/>\nis about to invoke svc_tcp_handshake_done(), but the callback&#8217;s<br \/>\nside effects on xpt_flags and on svsk-&gt;sk_handshake_done have not<br \/>\nyet committed.<\/p>\n<p>The current code reads xpt_flags immediately to decide whether the<br \/>\nsession succeeded. Two races result.<\/p>\n<p>If the callback has executed set_bit(XPT_TLS_SESSION) but not yet<br \/>\nclear_bit(XPT_HANDSHAKE), svc_tcp_handshake() sees a session,<br \/>\nenqueues the transport, and returns. svc_xprt_received() then<br \/>\nclears XPT_BUSY, a worker thread picks the transport up, the<br \/>\ndispatcher in svc_handle_xprt() observes XPT_HANDSHAKE still set,<br \/>\nand xpo_handshake is invoked a second time. That svc_tcp_handshake()<br \/>\ncalls init_completion(&amp;svsk-&gt;sk_handshake_done) while the original<br \/>\ncallback concurrently calls complete_all() on it, corrupting the<br \/>\nembedded swait_queue.<\/p>\n<p>If the callback has set HANDSHAKE_F_REQ_COMPLETED but not yet<br \/>\nentered svc_tcp_handshake_done(), svc_tcp_handshake() reads<br \/>\nXPT_TLS_SESSION as clear and tears the connection down even though<br \/>\nthe handshake is about to succeed.<\/p>\n<p>Wait for the callback to commit before inspecting xpt_flags. The<br \/>\ncompletion is guaranteed to fire because handshake_complete()<br \/>\ninvokes svc_tcp_handshake_done() unconditionally once it has set<br \/>\nHANDSHAKE_F_REQ_COMPLETED.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>sunrpc: wait for in-flight TLS handshake callback when cancel loses race<\/p>\n<p>When wait_for_completion_interruptible_timeout() in<br \/>\nsvc_t<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6845","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6845","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=6845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}