{"id":21471,"date":"2026-09-12T04:31:13","date_gmt":"2026-09-11T20:31:13","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89549"},"modified":"2026-09-12T04:31:13","modified_gmt":"2026-09-11T20:31:13","slug":"cve-2026-89549","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89549","title":{"rendered":"CVE-2026-89549 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nsunrpc: route to a po"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>sunrpc: route to a populated pool in svc_pool_for_cpu()<\/p>\n<p>svc_set_num_threads() spreads the requested threads evenly across the<br \/>\nservice&#8217;s pools (base = nrservs \/ sv_nrpools).  When a service runs<br \/>\nfewer threads than it has pools &#8212; e.g. an nfsd configured with fewer<br \/>\nthreads than the host has NUMA nodes while running in &#8220;pernode&#8221; or<br \/>\n&#8220;percpu&#8221; mode &#8212; the trailing pools are left with no threads at all.<\/p>\n<p>svc_xprt_enqueue() selects a pool from the CPU servicing the transport,<br \/>\nqueues the transport on that pool&#8217;s sp_xprts, and only wakes a thread<br \/>\nfrom the same pool.  Each thread services exclusively its own pool, so a<br \/>\ntransport that lands on a threadless pool is enqueued on sp_xprts and<br \/>\nnever picked up: the connection hangs indefinitely.<\/p>\n<p>Have svc_pool_for_cpu() skip pools that currently have no threads,<br \/>\nfalling back to the next populated pool.  This trades NUMA locality for<br \/>\na guarantee that the work is actually serviced.  sp_nrthreads is only<br \/>\nupdated under the service mutex; the lockless read here is a best-effort<br \/>\nrouting hint, so annotate it with data_race().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>sunrpc: route to a populated pool in svc_pool_for_cpu()<\/p>\n<p>svc_set_num_threads() spreads the requested threads evenly across the<br \/>\nserv<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21471","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21471","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=21471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}