UBUNTU-CVE-2026-89715: Medium severity ubuntu/linux-hwe-edge vulnerability
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
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
Which systems are exposed to this issue?
Systems using the listed Ubuntu kernel packages may be affected when NFS local I/O handling is in use. The failure requires nfs_uuid_add_file() to race with nfs_uuid_put() while the UUID network state is being torn down.
What is the operational impact of repeated failures?
Each occurrence can leak an nfsd_file reference, including its underlying file, dentry, and inode, as well as an nfsd_net reference. These retained references can prevent nfsd_net and network-namespace teardown.
How does the fix address the leak?
The fix releases the caller-owned file reference and its network reference through the existing helper when the failure path is taken. It then returns -ENXIO, preventing callers from dereferencing the unpublished NFS UUID pointer.