{"id":21469,"date":"2026-09-12T04:31:13","date_gmt":"2026-09-11T20:31:13","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89547"},"modified":"2026-09-12T04:31:13","modified_gmt":"2026-09-11T20:31:13","slug":"cve-2026-89547","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89547","title":{"rendered":"CVE-2026-89547 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nSUNRPC: Check svc poo"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>SUNRPC: Check svc pool percpu counter allocation<\/p>\n<p>__svc_create() initializes three per-pool percpu_counter stats and<br \/>\nignores every return value. On SMP, percpu_counter_init() fails when<br \/>\n__alloc_percpu_gfp() cannot satisfy the allocation, leaving the failed<br \/>\ncounter with fbc-&gt;counters == NULL and its embedded raw_spinlock_t,<br \/>\nlist_head, and count never initialized. __svc_create() returns the<br \/>\nhalf-constructed svc_serv to nfsd, lockd, or the NFS callback service<br \/>\nanyway.<\/p>\n<p>Once that service is live, the hot-path increments in<br \/>\nsvc_xprt_enqueue(), svc_handle_xprt(), and<br \/>\nsvc_pool_wake_idle_thread() reach a counter whose backing pointer is<br \/>\nNULL. The pointer is a per-cpu offset, so the access does not fault:<br \/>\nit resolves to offset zero of the current CPU&#8217;s per-cpu area and<br \/>\nsilently corrupts whatever variable lives there. A<br \/>\n\/proc\/fs\/nfsd\/pool_stats read walks the same NULL per-cpu storage and<br \/>\nreturns garbage, and on CONFIG_DEBUG_SPINLOCK or lockdep it splats on<br \/>\nthe never-initialized lock.<\/p>\n<p>Creating the broken service requires a percpu allocation failure during<br \/>\nRPC server startup, so it is reachable only by a local administrator<br \/>\nunder memory pressure or fault injection; a remote peer cannot induce<br \/>\nthe bad state on its own.<\/p>\n<p>Check each percpu_counter_init() return value in __svc_create() and<br \/>\nfail when an allocation fails, unwinding the counters already set up<br \/>\nin the current pool and in every pool initialized before it. A<br \/>\ndiscrete percpu_counter_destroy() per counter at teardown frees each<br \/>\nper-cpu allocation exactly once.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>SUNRPC: Check svc pool percpu counter allocation<\/p>\n<p>__svc_create() initializes three per-pool percpu_counter stats and<br \/>\nignores every <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21469","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21469","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=21469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}