CVE-2026-89547: SUNRPC: Check svc pool percpu counter allocation

Published Sep 11, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

SUNRPC: Check svc pool percpu counter allocation

svccreate() initializes three per-pool percpucounter stats and ignores every return value. On SMP, percpucounterinit() fails when allocpercpugfp() cannot satisfy the allocation, leaving the failed counter with fbc->counters == NULL and its embedded rawspinlockt, listhead, and count never initialized. svccreate() returns the half-constructed svcserv to nfsd, lockd, or the NFS callback service anyway.

Once that service is live, the hot-path increments in svcxprtenqueue(), svchandlexprt(), and svcpoolwakeidlethread() reach a counter whose backing pointer is NULL. The pointer is a per-cpu offset, so the access does not fault: it resolves to offset zero of the current CPU's per-cpu area and silently corrupts whatever variable lives there. A /proc/fs/nfsd/poolstats read walks the same NULL per-cpu storage and returns garbage, and on CONFIGDEBUGSPINLOCK or lockdep it splats on the never-initialized lock.

Creating the broken service requires a percpu allocation failure during RPC server startup, so it is reachable only by a local administrator under memory pressure or fault injection; a remote peer cannot induce the bad state on its own.

Check each percpucounterinit() return value in svccreate() and fail when an allocation fails, unwinding the counters already set up in the current pool and in every pool initialized before it. A discrete percpucounterdestroy() per counter at teardown frees each per-cpu allocation exactly once.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 11, 2026
CVE Published
via MITRE·07:44 PM
Data Sourced
via MITRE·07:44 PM
Description

Frequently Asked Questions

1

Who is realistically exposed to this issue?

Exposure requires an RPC server service such as nfsd, lockd, or the NFS callback service to be created after a per-CPU allocation failure. The described failure condition is reachable only by a local administrator during RPC server startup.

2

What would an attacker need to trigger the vulnerable state?

An attacker would need local administrative capability and would need to cause a per-CPU allocation to fail while the RPC server is starting. The affected service may then be returned in a partially constructed state and become live.

3

How can administrators tell whether the failure has occurred?

Reading /proc/fs/nfsd/pool_stats may return garbage. Systems built with CONFIG_DEBUG_SPINLOCK or lockdep may also report a warning involving an uninitialized lock; otherwise, hot-path counter operations can silently corrupt per-CPU data.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203