CVE-2026-89549: sunrpc: route to a populated pool in svc_pool_for_cpu()

Published Sep 11, 2026
·
Updated

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

sunrpc: route to a populated pool in svcpoolforcpu()

svcsetnumthreads() spreads the requested threads evenly across the service's pools (base = nrservs / svnrpools). When a service runs fewer threads than it has pools -- e.g. an nfsd configured with fewer threads than the host has NUMA nodes while running in "pernode" or "percpu" mode -- the trailing pools are left with no threads at all.

svcxprtenqueue() selects a pool from the CPU servicing the transport, queues the transport on that pool's spxprts, and only wakes a thread from the same pool. Each thread services exclusively its own pool, so a transport that lands on a threadless pool is enqueued on spxprts and never picked up: the connection hangs indefinitely.

Have svcpoolforcpu() skip pools that currently have no threads, falling back to the next populated pool. This trades NUMA locality for a guarantee that the work is actually serviced. spnrthreads is only updated under the service mutex; the lockless read here is a best-effort routing hint, so annotate it with datarace().

Event History

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

Frequently Asked Questions

1

Which systems are exposed to this issue?

Systems running an RPC service such as nfsd in "pernode" or "percpu" pool mode can be exposed when the configured service thread count is lower than the number of service pools, such as when there are fewer threads than NUMA nodes.

2

What condition triggers the service disruption?

A transport must be assigned to a pool with no service threads. Because workers only service their own pool, the transport remains queued in that pool and its connection can hang indefinitely.

3

Is this a default-configuration issue?

The provided information identifies the issue only when a service uses "pernode" or "percpu" mode and has fewer threads than pools. It does not state whether those modes or thread counts are default settings.

4

What mitigation is available if the fix cannot be applied immediately?

Configure the service with at least as many threads as its number of pools, avoiding trailing pools with zero threads. The affected scenario is specifically described as having fewer service threads than pools.

5

How can administrators recognize that they are affected?

Look for RPC transports or connections that are queued but never serviced, resulting in connections hanging indefinitely. The relevant configuration pattern is a service with threadless pools in "pernode" or "percpu" mode.

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