data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-89549 in the interactive tracker

CVE-2026-89549

sunrpc: route to a populated pool in svc_pool_for_cpu()

7.5 EPSS 0.7% AV:N

Published 2026-09-11 (37 days ago) by the Linux kernel CNA. Subsystem net/sunrpc. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-89549 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4841-1 · 2026-10-17 · text6.1.190-1Update the kernel and reboot. DLA-4841-1 shipped the fix on 2026-10-17, in 6.1.190-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

svc_set_num_threads() spreads the requested threads evenly across the service's pools (base = nrservs / sv_nrpools). 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. svc_xprt_enqueue() selects a pool from the CPU servicing the transport, queues the transport on that pool's sp_xprts, 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 sp_xprts and never picked up: the connection hangs indefinitely. Have svc_pool_for_cpu() 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. sp_nrthreads is only updated under the service mutex; the lockless read here is a best-effort routing hint, so annotate it with data_race().

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

net/sunrpc/svc.c

What this is
KERNEL NFSD, SUNRPC, AND LOCKD SERVERSMAINTAINERS section matched on net/sunrpc/ · linux-nfs@vger.kernel.org · Supported
Kernel module
sunrpc

Check it on the machine

grep -w CONFIG_SUNRPC /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w sunrpc

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this as a loadable module. Every release below compiles it as a module on every flavour, so whether the code is in the running kernel depends on whether that module is loaded.

  • bookworm, trixie, forky, sid, bookworm · linux-6.12m
m
a loadable module on every flavour - check lsmod, can be blacklisted
Build switch
CONFIG_SUNRPC

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-09-11 (37 days ago)source
CVSS
7.5 high
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.71%, higher than 52.5% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
net/sunrpc

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
2.6.195.10.2709accc25e5af0
2.6.195.15.2216f66d38e2a6c
2.6.196.1.188d79d7b9e8acb
2.6.196.6.157edb20e8c03ae
2.6.196.12.109011479cf9a76
2.6.196.18.509d04d64ad192
2.6.197.2.48f766d2d0b4d
2.6.197.3f6310491c4cd

Debian advisories

AdvisoryDateShipped toDebian
DLA-4841-12026-10-17bookworm 6.1.190-1tracker
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:NAttack vector, network
nfsd is the in-kernel NFS server; inbound TCP/UDP/RDMA traffic hits svc_tcp_listen_data_ready/svc_data_ready then svc_xprt_enqueue() and svc_pool_for_cpu() before any RPC decode, so a remote peer reaches the bug over the wire.
AC:LAttack complexity, low
On NUMA nfsd hosts using pernode/percpu pools with fewer threads than pools, a remote peer can open connections or send datagrams until RSS/softirq lands the listener or shared UDP xprt on an empty pool; the attacker controls that fan-out and no race or layout luck is required.
PR:NPrivileges required, none
Enqueue runs in the socket data_ready path on the first TCP connect or UDP datagram to nfsd, before RPC parsing or AUTH_SYS/RPCSEC_GSS, so an unauthenticated network peer needs no local account or capability.
UI:NUser interaction, none
No victim action is required; an already-running NFS server automatically processes inbound connections and packets through the sunrpc transport callbacks.
S:UScope, unchanged
The hang is confined to the host kernel's sunrpc/nfsd threads and sockets and does not cross a VM, IOMMU, or other security-authority boundary.
C:NConfidentiality impact, none
This is a transport-scheduling hang with no memory corruption, out-of-bounds access, or other primitive that could disclose kernel or file data.
I:NIntegrity impact, none
A transport stuck on a threadless pool is never serviced, so RPC operations are not executed and no kernel or filesystem state is modified.
A:HAvailability impact, high
A transport enqueued on a threadless pool stays XPT_BUSY and is never dequeued; aging skips busy sockets, so a stuck listener or shared UDP xprt permanently stops NFS accept/recv until nfsd restarts.