{"id":6941,"date":"2026-09-04T18:49:21","date_gmt":"2026-09-04T10:49:21","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72317"},"modified":"2026-09-04T18:49:21","modified_gmt":"2026-09-04T10:49:21","slug":"cve-2026-72317","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72317","title":{"rendered":"CVE-2026-72317 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nSUNRPC: pin upper rpc"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>SUNRPC: pin upper rpc_clnt across the TLS connect_worker<\/p>\n<p>The TLS connect path has a use-after-free: nothing pins the<br \/>\nupper rpc_clnt across the delayed connect_worker. xs_connect()<br \/>\nstores task-&gt;tk_client in sock_xprt::clnt as a raw pointer<br \/>\nand queues the worker; for TLS-secured transports that worker<br \/>\nis xs_tcp_tls_setup_socket(), which reads several fields out<br \/>\nof the saved pointer (cl_timeout, cl_program, cl_prog,<br \/>\ncl_vers, cl_cred, cl_stats) to construct the args for the<br \/>\ninner handshake rpc_clnt.<\/p>\n<p>The xprt does not reference the rpc_clnt; the rpc_clnt<br \/>\nreferences the xprt. xs_destroy() does cancel the<br \/>\nconnect_worker, but it runs only when the xprt&#8217;s refcount<br \/>\ndrops to zero, which cannot happen until the rpc_clnt<br \/>\nreleases its cl_xprt reference in rpc_free_client_work().<br \/>\nWhen a TLS handshake fails fatally (for example, an mTLS<br \/>\nmount whose client cert does not match the server), the<br \/>\nconnecting task is woken with -EACCES and exits, the mount<br \/>\ncaller invokes rpc_shutdown_client(), and the upper rpc_clnt<br \/>\nis freed before the queued connect_worker fires.<br \/>\nxs_tcp_tls_setup_socket() then dereferences the freed clnt,<br \/>\nproducing the refcount_t underflow Michael Nemanov reported.<\/p>\n<p>Take a reference on the upper rpc_clnt in xs_connect() for<br \/>\nTLS transports via a new rpc_hold_client() helper, and drop<br \/>\nit in the connect_worker&#8217;s exit path with rpc_release_client().<br \/>\nThe xprt_lock_connect() \/ xprt_unlock_connect() pairing<br \/>\nalready serialises xs_connect() with xs_tcp_tls_setup_socket(),<br \/>\nso the take and release are balanced one-for-one.<\/p>\n<p>The non-TLS connect worker (xs_tcp_setup_socket) never reads<br \/>\nsock_xprt::clnt, so leave that path alone and avoid the<br \/>\nclnt-holds-xprt-holds-clnt cycle that would otherwise prevent<br \/>\nxprt destruction.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>SUNRPC: pin upper rpc_clnt across the TLS connect_worker<\/p>\n<p>The TLS connect path has a use-after-free: nothing pins the<br \/>\nupper rpc_cln<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6941","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6941","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=6941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}