CVE-2026-89674

nfsd: fix XDR length calculation in nfsd4_ff_encode_layoutget

State
Published
Severity
9.8 Critical
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before 3a7fd224df0fbb42167eb1b77be45d72fe0b1098Affected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before 29e4478e2ed5a227e8f0c33cacb91bf227cedd47Affected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before 65a72b721943618eeb3a41c8b36e915591f3f83fAffected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before bee826c00ac900473f91306f1f3e5a5a81fd4a74Affected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before e7d9d23ecd9172f05b09bb678ff22db8e361c428Affected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before 0380129b1373c437eb35401a174671c8888f4b80Affected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before c81cef6a805dec266c10fc4f83c93d6fcf1a2b43Affected
  • 9b9960a0ca4773e21c4b153ed355583946346b25 to before f9868174af49d207fbaf0c5e055d088a983684afAffected
LinuxLinux
  • 4.8Affected
  • before 4.8Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.