CVE-2026-89715: NFS/localio: fix ref leak on nfs_uuid_add_file failure

Published Sep 11, 2026
·
Updated

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

NFS/localio: fix ref leak on nfsuuidaddfile failure

When nfsuuidaddfile() races with nfsuuidput() tearing down uuid->net, it returns -ENXIO without publishing nfl->nfsuuid via rcuassignpointer(). nfsopenlocalfh() then enters its error branch and only releases the slot's file ref and its paired net ref plus its own entry-time net ref, while the close path is a no-op:

nfscloselocalfh() nfsuuid = rcudereference(nfl->nfsuuid); if (!nfsuuid) { rcureadunlock(); return; } / always /

nfsdopenlocalfh() returns localio holding a caller-owned +1 nfsdfile reference (from nfsdfileget() after nfsdfileacquirelocal()) and an entry-time nfsdnet reference (from its first nfsdnettryget()) embedded as nf->nfnet. Both are leaked on the failure path, pinning one nfsdfile (and the underlying struct file, dentry, inode) and one nfsdnetref per occurrence, which blocks nfsdnet and netns teardown.

Fix by releasing the caller-owned file ref and its net ref through the existing helper, using a stack-local RCU pointer so the helper can xchg it out, then returning -ENXIO so callers do not dereference a localio whose slot has been cleared:

struct nfsdfile rcu tmp = RCUINITIALIZER(localio);

nfstonfsdfileputlocal(pnf); nfstonfsdfileputlocal(&tmp); localio = ERRPTR(-ENXIO);

The trailing nfstonfsdnetput(net) continues to release the outer net ref, so all three nfsdnettryget() increments are balanced on the error branch.

Affected Software

1 affected component
Linux Kernel

Event History

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

Frequently Asked Questions

1

Which systems are exposed to this issue?

Systems using the Linux kernel NFS/localio path are exposed when nfs_uuid_add_file() races with nfs_uuid_put() while uuid->net is being torn down. The issue occurs specifically when nfs_uuid_add_file() returns -ENXIO before nfl->nfs_uuid is published.

2

What is the operational impact of a successful trigger?

Each occurrence leaks an nfsd_file reference, including the underlying struct file, dentry, and inode, as well as an nfsd_net reference. These leaked references can prevent nfsd_net and network-namespace teardown.

3

How does the fix change failure handling?

On the affected -ENXIO failure path, the fix releases the caller-owned file reference and associated network reference through the existing helper before returning -ENXIO. This prevents the resources from remaining pinned when the close path has no published nfs_uuid to release.

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