CVE-2026-74359

configfs_lookup(): don't leave ->s_dentry dangling on failure

State
Published
Severity
7.8 High
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

Description

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

configfs_lookup(): don't leave ->s_dentry dangling on failure

Normally ->s_dentry is cleared when dentry it's pointing to becomes negative (on eviction, realistically). However, that only happens if dentry gets to be positive in the first place; in case of inode allocation failure dentry never becomes positive, so ->d_iput() is not called at all.

We do part of what normally would've been done by configfs_d_iput() (dropping the reference to configfs_dirent) manually, but we do not clear ->s_dentry there. Sloppy as it is, it does not matter in case of configfs_create_{dir,link}() - there configfs_dirent does not survive dropping the sole reference to it.

However, for configfs_lookup() it *does* survive, with a dangling pointer to soon to be freed dentry sitting it its ->s_dentry.

Subsequent getdents(2) in that directory will end up dereferencing that pointer in order to pick the inode number. Use after free...

This is the minimal fix; the right approach is to set the linkage between dentry and configfs_dirent only after we know that we have an inode, but that takes more surgery and the bug had been there since 2006, so...

Scores

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

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before 3e83b2203aa59bd279e4f677ec793d49dc9d019eAffected
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before b6e9c82522ddaa3ac0706b295ff4a71975d4f883Affected
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before eee07d769da5ac4e4f7bd0bc17828646a318d499Affected
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before 9c747dcee164ead300de90550ad9e4122f0d1bbbAffected
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before c3b073a209a9baa691b744318ac929fecdd8847cAffected
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before 57088b06109f3222963c639d8d743f42c2899b13Affected
  • 3d0f89bb169482d26d5aa4e82e763077e7e9bc4d to before 10da12d352b7b2bb330a8609fdda9a58bf0e9856Affected
LinuxLinux
  • 2.6.16Affected
  • before 2.6.16Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.97 through 6.12.*Not affected
  • 6.18.40 through 6.18.*Not affected
  • 7.1.5 through 7.1.*Not affected
  • 7.2 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.