CVE-2026-23297 Details
Description
In the Linux kernel, the following vulnerability has been resolved: nfsd: Fix cred ref leak in nfsd_nl_threads_set_doit(). syzbot reported memory leak of struct cred. [0] nfsd_nl_threads_set_doit() passes get_current_cred() to nfsd_svc(), but put_cred() is not called after that. The cred is finally passed down to _svc_xprt_create(), which calls get_cred() with the cred for struct svc_xprt. The ownership of the refcount by get_current_cred() is not transferred to anywhere and is just leaked. nfsd_svc() is also called from write_threads(), but it does not bump file->f_cred there. nfsd_nl_threads_set_doit() is called from sendmsg() and current->cred does not go away. Let's use current_cred() in nfsd_nl_threads_set_doit(). [0]: BUG: memory leak unreferenced object 0xffff888108b89480 (size 184): comm "syz-executor", pid 5994, jiffies 4294943386 hex dump (first 32 bytes): 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace (crc 369454a7): kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline] slab_post_alloc_hook mm/slub.c:4958 [inline] slab_alloc_node mm/slub.c:5263 [inline] kmem_cache_alloc_noprof+0x412/0x580 mm/slub.c:5270 prepare_creds+0x22/0x600 kernel/cred.c:185 copy_creds+0x44/0x290 kernel/cred.c:286 copy_process+0x7a7/0x2870 kernel/fork.c:2086 kernel_clone+0xac/0x6e0 kernel/fork.c:2651 __do_sys_clone+0x7f/0xb0 kernel/fork.c:2792 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xa4/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f
A memory leak vulnerability has been identified in the Linux kernel's NFSD (NFS daemon) component, specifically within the 'nfsd_nl_threads_set_doit()' function. This vulnerability arises because 'nfsd_nl_threads_set_doit()' passes a reference to the current credentials to 'nfsd_svc()' without subsequently releasing it, leading to a leaked reference. The leaked credential is eventually passed to '_svc_xprt_create()', which retrieves the credential for the service transport structure, but the ownership of the reference count is not properly managed, resulting in a memory leak. This issue was reported by syzbot and has been fixed by modifying 'nfsd_nl_threads_set_doit()' to use 'current_cred()' instead of 'get_current_cred()'.
Users can upgrade to the latest stable version of the Linux kernel where this vulnerability has been fixed. Instructions for downloading the patched version are available on the official Linux kernel website.
Metrics
CVSS 4.0 Severity and Vector Strings:
No CVSS 4.0 data is available for this CVE.
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
No SSVC data is available for this CVE.
References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://git.kernel.org/stable/c/1cb968a2013ffa8112d52ebe605009ea1c6a582c | kernel.org | Patch |
| https://git.kernel.org/stable/c/27c13c5bb0948e3b5c64e59f8a903231896fab9b | kernel.org | Patch |
| https://git.kernel.org/stable/c/41170716421c25cd20b39e83f0e0762e212b377b | kernel.org | Patch |
| https://git.kernel.org/stable/c/a3f88e3e18b51a7f654189189c762ebcdeaa7e29 | kernel.org | Patch |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-401 | Missing Release of Memory after Effective Lifetime | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| linux linux kernel | >= 6.10, < 6.12.77 >= 6.13, < 6.18.17 >= 6.19, < 6.19.7 7.0 rc1 7.0 rc2 |
CPE
Remediation
| |
Change History
3 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Jun 17, 2026 | CVE Modified | kernel.org |
| May 29, 2026 | Initial Analysis | [email protected] |
| Mar 25, 2026 | New CVE Received | kernel.org |