CVE-2026-89677: nfsd: fix possible fh_compose of wrong dentry in nfsd4_create_file()

Published Sep 11, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

nfsd: fix possible fhcompose of wrong dentry in nfsd4createfile()

dentrycreate() can hypothetically provide a different dentry than the one passed in. This could happen, for example, if the exported filesystem is NFS, and the server returned to OPEN a filehandle which matched a directory that was already in the dcache. Clearly this would not be expected!

If this were to happen the dentry (child) that was already stored in resfhp could be freed and later dereferenced.

We shouldn't call fhcompose() until we are certain that we have the final dentry, so this patch moved the fhcompose() call to two places: one for the case where the target already exists, and one after dentrycreate() where it was created.

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Linux kernel to a version that resolves this vulnerability.

    Patch nfsd: fix possible fh_compose of wrong dentry in nfsd4_create_file()

Event History

Sep 11, 2026
CVE Published
via MITRE·07:46 PM
Data Sourced
via MITRE·07:46 PM
Description

Frequently Asked Questions

1

What conditions are needed to trigger the issue?

The problematic path is in NFS server file creation handling. The described scenario requires dentry_create() to return a different dentry than the one supplied, which can occur hypothetically when the exported filesystem is itself NFS and an OPEN response returns a filehandle matching a directory already present in the dcache.

2

What is the likely impact if the condition occurs?

A child dentry previously stored in the response filehandle can be freed and later dereferenced. This indicates a potential use-after-free condition in the NFS server's create-file path.

3

How is the issue addressed by the fix?

The fix delays fh_compose() until the final dentry is known. It invokes fh_compose() separately when the target already exists and after dentry_create() when the target was created.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203