CVE-2026-89712

NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock

CRITICAL
9.8
CVSS Score
Published: September 11, 2026 at 07:46 PM UTC
Updated: October 19, 2026 at 09:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
CRITICAL9.8
Exploit prediction
EPSS 0.7%

Description

In the Linux kernel, the following vulnerability has been resolved: NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock nfsd4_ssc_expire_umount() walks nn->nfsd_ssc_mount_list with list_for_each_entry_safe(ni, tmp, ...). For each expired entry it sets nsui_busy = true, drops nfsd_ssc_lock to run mntput() on the source vfsmount, then reacquires the lock to list_del + kfree the entry and continue iterating via the macro's saved tmp pointer. The nsui_busy flag protects the current ni from concurrent nfsd4_ssc_setup_dul() finders during the lock-drop window, but it does not pin tmp. Another nfsd RPC thread that fails its source- server mount and reaches nfsd4_ssc_cancel_dul() will, during that same window, take nfsd_ssc_lock, list_del + kfree its own ssc_umount item, and release the lock. If that item is the saved tmp of the expire walk, the next iteration dereferences a freed nfsd4_ssc_umount_item. Restart the walk from the head after the mntput() unlock window so no saved next pointer survives the lock-drop. The list is bounded by the number of active inter-server source mounts (typically small) and the expire delayed-work runs periodically rather than per-IO, so the restart is cheap.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

5.10.2205.14a4bc287943f5695209ff36bdc89f17b48d68fae7f4e44b393389c77958f7c58bf4415032b4cda15b
Vendor states this is fixed in 036c1b182f4da65363e79ec0ac276edc6b7296e5 (fixed)
Vendor states this is fixed in 2b59029b8f24a99b5d844af2da3950d39d36eeea (fixed)
Vendor states this is fixed in 4ed8d2317aef21cc2a9e5a55d6b59860b4b151a8 (fixed)
Vendor states this is fixed in 60680ae7243b22de3d09be990d8e23bcfc4af837 (fixed)
Vendor states this is fixed in 659ee3da073164e1e6e40dfcbc26eeed85845f93 (fixed)
Vendor states this is fixed in 7377fa964b8aaf47cb04e5efcc4c82d15e8c2ce9 (fixed)
Vendor states this is fixed in 77de363d9a1c8cd35f20482782c612cda085791a (fixed)
Vendor states this is fixed in d9e151fea5ed706c1284adacabd869b0be745db2 (fixed)
Vendor states this is fixed in 5.10.270 (unaffected)
Vendor states this is fixed in 5.14 (unaffected)
Vendor states this is fixed in 5.15.221 (unaffected)
Vendor states this is fixed in 6.1.188 (unaffected)
Vendor states this is fixed in 6.12.109 (unaffected)
Vendor states this is fixed in 6.18.50 (unaffected)
Vendor states this is fixed in 6.6.157 (unaffected)
Vendor states this is fixed in 7.2.4 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc1 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

CVSS

9.8CRITICALLinux
Vector?

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card