CVE-2026-89712

NFSD: restart ssc_expire_umount walk after dropping nfsd_ssc_lock

State
Published
Severity
9.8 Critical
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • a4bc287943f5695209ff36bdc89f17b48d68fae7 to before 2b59029b8f24a99b5d844af2da3950d39d36eeeaAffected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before d9e151fea5ed706c1284adacabd869b0be745db2Affected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before 659ee3da073164e1e6e40dfcbc26eeed85845f93Affected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before 60680ae7243b22de3d09be990d8e23bcfc4af837Affected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before 77de363d9a1c8cd35f20482782c612cda085791aAffected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before 4ed8d2317aef21cc2a9e5a55d6b59860b4b151a8Affected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before 7377fa964b8aaf47cb04e5efcc4c82d15e8c2ce9Affected
  • f4e44b393389c77958f7c58bf4415032b4cda15b to before 036c1b182f4da65363e79ec0ac276edc6b7296e5Affected
  • 5.10.220 to before 5.10.270Affected
LinuxLinux
  • 5.14Affected
  • before 5.14Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.