Skip to content
Heist/ feed
Critical

nfsd: fix XDR length calculation in nfsd4_ff_encode_layoutget

Type: advisorySource: Official CVE List1 source record

In the Linux kernel, the following vulnerability has been resolved: nfsd: fix XDR length calculation in nfsd4_ff_encode_layoutget The XDR buffer size calculation in nfsd4_ff_encode_layoutget() has multiple errors that can result in either an out-of-bounds write or leaking uninitialized kernel memory to the client: - fh_len doesn't account for XDR padding on the file handle data - uid and gid lengths use "8 + len" but xdr_encode_opaque() actually writes "4 + xdr_align_size(len)" bytes - ds_len omits the flags and stats_collect_hint fields (8 bytes), while len's header constant overestimates by 8 bytes -- these partially cancel but leave a net mismatch The worst case occurs with short strings (e.g. uid=0, gid=0 with an odd-sized file handle), where the function writes up to 5 bytes past the reserved XDR buffer. Conversely, when string lengths happen to be 4-byte aligned, the reservation is too large and stale buffer content is sent to the client. Fix this by breaking out every encoded field explicitly in the ds_len calculation, using xdr_align_size() for all variable-length opaque fields, and correcting the header constants.

Announced Group revision 1
Original source ↗

CVE-2026-89674

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-89674

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": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "3a7fd224df0fbb42167eb1b77be45d72fe0b1098",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "29e4478e2ed5a227e8f0c33cacb91bf227cedd47",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "65a72b721943618eeb3a41c8b36e915591f3f83f",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "bee826c00ac900473f91306f1f3e5a5a81fd4a74",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "e7d9d23ecd9172f05b09bb678ff22db8e361c428",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "0380129b1373c437eb35401a174671c8888f4b80",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "c81cef6a805dec266c10fc4f83c93d6fcf1a2b43",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "9b9960a0ca4773e21c4b153ed355583946346b25",
        "lessThan": "f9868174af49d207fbaf0c5e055d088a983684af",
        "versionType": "git"
      }
    ],
    "programFiles": [
      "fs/nfsd/flexfilelayoutxdr.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.8"
      },
      {
        "status": "unaffected",
        "version": "0",
        "lessThan": "4.8",
        "versionType": "semver"
      },
      {
        "status": "unaffected",
        "version": "5.10.270",
        "versionType": "semver",
        "lessThanOrEqual": "5.10.*"
      },
      {
        "status": "unaffected",
        "version": "5.15.221",
        "versionType": "semver",
        "lessThanOrEqual": "5.15.*"
      },
      {
        "status": "unaffected",
        "version": "6.1.188",
        "versionType": "semver",
        "lessThanOrEqual": "6.1.*"
      },
      {
        "status": "unaffected",
        "version": "6.6.157",
        "versionType": "semver",
        "lessThanOrEqual": "6.6.*"
      },
      {
        "status": "unaffected",
        "version": "6.12.109",
        "versionType": "semver",
        "lessThanOrEqual": "6.12.*"
      },
      {
        "status": "unaffected",
        "version": "6.18.50",
        "versionType": "semver",
        "lessThanOrEqual": "6.18.*"
      },
      {
        "status": "unaffected",
        "version": "7.2.4",
        "versionType": "semver",
        "lessThanOrEqual": "7.2.*"
      },
      {
        "status": "unaffected",
        "version": "7.3",
        "versionType": "original_commit_for_fix",
        "lessThanOrEqual": "*"
      }
    ],
    "programFiles": [
      "fs/nfsd/flexfilelayoutxdr.c"
    ],
    "defaultStatus": "affected"
  }
]
Related CVEs
CVE-2026-89674

Source reference: /cveMetadata/cveId

Publisher severity

critical

Source reference: /containers/cna/metrics

Event
#35164 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement