CVE-2026-89711
nicheFlawed WARN_ON_ONCE/NULL-lookup risk in Linux kernel NFSD NFS re-export path
The Linux kernel's NFSD contained a flawed WARN_ON_ONCE in nfsd_mode_check(), added under the invalid assumption that any directory dentry passed to it supports i_op->lookup; that assumption breaks when NFSD re-exports an NFS filesystem, because dentries for NFS mountpoints and referrals (NFS_ATTR_FATTR_MOUNTPOINT / NFS_ATTR_FATTR_V4_REFERRAL) lack a lookup method. An unauthenticated remote NFS client can trigger the warning by issuing a LOOKUP into such a dentry on an affected server, causing warning spam or a panic on systems with panic_on_warn set, and without the nfserr_notdir guard the same path would NULL-dereference the i_op->lookup pointer in __lookup_slow. The fix removes the WARN_ON_ONCE while keeping the nfserr_notdir return as the actual NULL-deref protection, and CVSS 8.2 rates the impact as primarily high availability loss with minor confidentiality impact. Only servers running the kernel NFS daemon (knfsd) configured to re-export an NFS filesystem are exposed to the triggering condition. No public PoC exists, the issue is not in CISA's KEV, and no exploitation is known.
What to do: Apply your distribution's kernel update containing this fix and reboot into the patched kernel. As mitigations, avoid or unwind NFS-over-NFS re-export configurations on knfsd servers, restrict exports and firewall TCP/2049 to trusted client networks, and verify panic_on_warn is not enabled on production NFS servers so a stray warning cannot become an outage.
| Linux kernel (NFSD) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: NFSD: remove flawed WARN_ON_ONCE from nfsd_mode_check The header for commit e75b23f9e323 ("nfsd: check d_can_lookup in fh_verify of directories") details the assumption that justified adding the WARN_ON_ONCE to nfsd_mode_check(), that assumption is invalid (in the case of NFS reexport). When NFSD exports an NFS filesystem it is very possible for nfsd_mode_check() to encounter a @dentry that doesn't have i_op->lookup (see nfs_fhget()'s NFS_ATTR_FATTR_MOUNTPOINT and NFS_ATTR_FATTR_V4_REFERRAL handling, and d_flags_for_inode()). So remove nfsd_mode_check()'s WARN_ON_ONCE(). The nfserr_notdir return on that branch must stay. It guards the subsequent lookup_one_unlocked() -> __lookup_slow() path, which calls inode->i_op->lookup() with no NULL check, so returning nfserr_notdir is what keeps a client LOOKUP into such a @dentry from dereferencing a NULL method pointer.
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.