CVE-2026-89673: nfsd: fix XDR padding calculation in ff_encode_getdeviceinfo
In the Linux kernel, the following vulnerability has been resolved:
nfsd: fix XDR padding calculation in ffencodegetdeviceinfo
nfsd4ffencodegetdeviceinfo() computes the daaddrbody reservation as 16 + netidlen + addrlen, but the subsequent xdrencodeopaque() calls emit 8 + roundup(netidlen, 4) + roundup(addrlen, 4) bytes. The mismatch means the declared daaddrbody length exceeds the actual encoded data by 2-8 bytes on every flexfile GETDEVICEINFO reply, leaking stale reply-page content to the client and mis-aligning the subsequent version list decode.
Use xdralignsize() for each string length to match what xdrencodeopaque() actually writes.
Affected Software
Event History
Frequently Asked Questions
Which systems are exposed to this issue?
Systems acting as NFS servers with the kernel nfsd flexfile GETDEVICEINFO reply path in use are exposed. The issue occurs on every flexfile GETDEVICEINFO reply generated by the affected code path.
What can a client obtain or cause by triggering the issue?
A client receiving a flexfile GETDEVICEINFO reply may receive 2 to 8 bytes of stale reply-page content because the declared address-body length is larger than the encoded data. The length mismatch also misaligns decoding of the subsequent version list.
Does exploitation require authentication or special configuration?
The provided information establishes that an attacker needs to obtain a flexfile GETDEVICEINFO reply from the affected nfsd path. It does not specify authentication requirements or the configuration needed to enable flexfiles.
How can I tell whether a server is affected?
Review whether the installed kernel includes the referenced fixes and whether the server uses the nfsd flexfile GETDEVICEINFO path. The provided data does not include affected kernel version ranges or a runtime detection method.