UBUNTU-CVE-2026-89670: High severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: nfsd: hold rcu across localio cmpxchg retry nfsdfile objects are freed via callrcu (filecache.c:296), and nfsdfileslab is created without SLABTYPESAFEBYRCU (KMEMCACHE(nfsdfile, 0) at filecache.c:789), so the slab page backing a freed nfsdfile becomes freely reclaimable once the RCU grace period elapses. The again: retry block in nfsdopenlocalfh() loads a pointer with cmpxchg and then calls nfsdfileget(new) (which is refcountincnotzero) without holding rcureadlock. The sole caller nfsopenlocalfh() drops rcureadlock before invoking this helper, so no outer reader-side critical section covers the load. CPU 0 (nfsdopenlocalfh) CPU 1 (nfsdfileputlocal) ----- ----- new = cmpxchg(pnf, NULL, ...) nf = xchg(pnf, NULL) nfsdfileput(nf) last ref -> callrcu() / grace period elapses; slab page recycled / nfsdfileget(new) refcountincnotzero(&new->nfref) / operates on recycled memory / A non-zero word at the nfref offset of the recycled object makes the refcount bump appear to succeed, and the caller then dereferences new->nfnet and new->nffile out of freed memory. Fix by taking rcureadlock() immediately before the cmpxchg and releasing it on all three exits of the if (new) block: the goto-again retry, the lost-race cleanup path, and the install-succeeded path. nfsdfileput() and nfsdnetput() stay outside the RCU section so they remain free to block.
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 - Compensating control
In nfsd_open_local_fh(), take rcu_read_lock() immediately before the cmpxchg and release it on all three exits of the if (new) block: the goto-again retry, lost-race cleanup, and install-succeeded paths. Keep nfsd_file_put() and nfsd_net_put() outside the RCU critical section.
Event History
Frequently Asked Questions
What access does an attacker need to exploit this issue?
The vulnerability is rated for local attack vector with low privileges required and no user interaction. The provided data does not indicate that remote network access alone is sufficient.
Which Ubuntu kernel package variants are listed as affected?
The listed variants are ubuntu/linux-riscv, ubuntu/linux-realtime, ubuntu/linux-hwe-edge, ubuntu/linux-azure, ubuntu/linux-gcp, ubuntu/linux-azure-fde, ubuntu/linux-gke, and ubuntu/linux-aws-5.0.
What is the potential security impact if exploitation succeeds?
The severity vector rates confidentiality, integrity, and availability impact as high. The issue can cause operations on recycled freed memory after an RCU grace period.