CVE-2025-71074

functionfs: fix the open/removal races

State
Published
Severity
7.8 High
Published
Jan 13, 2026
Updated
Oct 30, 2026
Reserved
Jan 13, 2026

Read the record on cve.org

Description

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

functionfs: fix the open/removal races

ffs_epfile_open() can race with removal, ending up with file->private_data pointing to freed object.

There is a total count of opened files on functionfs (both ep0 and dynamic ones) and when it hits zero, dynamic files get removed. Unfortunately, that removal can happen while another thread is in ffs_epfile_open(), but has not incremented the count yet. In that case open will succeed, leaving us with UAF on any subsequent read() or write().

The root cause is that ffs->opened is misused; atomic_dec_and_test() vs. atomic_add_return() is not a good idea, when object remains visible all along.

To untangle that * serialize openers on ffs->mutex (both for ep0 and for dynamic files) * have dynamic ones use atomic_inc_not_zero() and fail if we had zero ->opened; in that case the file we are opening is doomed. * have the inodes of dynamic files marked on removal (from the callback of simple_recursive_removal()) - clear ->i_private there. * have open of dynamic ones verify they hadn't been already removed, along with checking that state is FFS_ACTIVE.

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
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before e002b3c1e6a0faa53329ef0d21e6351bcece6edbAffected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before 585a656283c954337036422afcd9cb70dd4135e7Affected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before 75240e5e51c6e6d67a3039384125fa54259a3926Affected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before e5bf5ee266633cb18fff6f98f0b7d59a62819eeeAffected
LinuxLinux
  • 2.6.35Affected
  • before 2.6.35Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.114 through 6.12.*Not affected
  • 6.19 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.