NFS: Return a delegation the client fails to record
In the Linux kernel, the following vulnerability has been resolved: NFS: Return a delegation the client fails to record When an NFS server grants a delegation in an OPEN reply, nfs_inode_set_delegation() records it on the client. However, three of its error flows return without sending DELEGRETURN. A delegation can be relinquished only by DELEGRETURN (RFC 8881 Section 20.2.4), so dropping one silently leaves the server believing the client still holds it. If the server happens to recall that delegation, the client answers CB_RECALL with NFS4ERR_BADHANDLE because it has no record of the stateid. The server revokes the delegation and moves it onto its cl_revoked list, because the client never sends the FREE_STATEID that would drain it. Every subsequent SEQUENCE reply then carries SEQ4_STATUS_RECALLABLE_STATE_REVOKED, and the client's state manager loops issuing TEST_STATEID across its delegations without ever clearing the condition. The window is easy to reach now that a server offers a write delegation on any write OPEN: a delegation recalled for one opener races a re-open that the server answers with a fresh write delegation. Instead of dropping it, hand the delegation back during these error flows.
CVE-2026-90234
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: cve:CVE-2026-90234
Linux
Source reference: /containers/cna/affected/0/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Linux
Source reference: /containers/cna/affected/1/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "ade04647dd56881e285983af3db702d56ee97e86",
"lessThan": "9e71e332fa2c7a48f3d00001f856a13cc2d69639",
"versionType": "git"
},
{
"status": "affected",
"version": "ade04647dd56881e285983af3db702d56ee97e86",
"lessThan": "fe3b1c8966a27b70599d28ce7e80819adac1ff22",
"versionType": "git"
},
{
"status": "affected",
"version": "ade04647dd56881e285983af3db702d56ee97e86",
"lessThan": "6822ba1ae9b6df6a094f7f8998f1da734c85fa19",
"versionType": "git"
},
{
"status": "affected",
"version": "ade04647dd56881e285983af3db702d56ee97e86",
"lessThan": "92533e49fe3c455088657b862cf3562260c0ce25",
"versionType": "git"
},
{
"status": "affected",
"version": "ade04647dd56881e285983af3db702d56ee97e86",
"lessThan": "220af23d863995091f0edeb1e6aa0945b3db8b37",
"versionType": "git"
}
],
"programFiles": [
"fs/nfs/delegation.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "4.0"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "4.0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.6.160",
"versionType": "semver",
"lessThanOrEqual": "6.6.*"
},
{
"status": "unaffected",
"version": "6.12.114",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.57",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.6",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"fs/nfs/delegation.c"
],
"defaultStatus": "affected"
}
]- Related CVEs
- CVE-2026-90234
Source reference:
/cveMetadata/cveId
Publisher severity
high
Source reference: /containers/cna/metrics
- Event
- #48640 · Revision 1
- Added to Heist Feed
- Publisher date