CVE-2026-99171

ntfs3: free the sbi after a grace period

State
Published
Severity
Not scored
Published
Oct 28, 2026
Updated
Oct 30, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

ntfs3: free the sbi after a grace period

If the "nocase" mount option ntfs3 uses custom hash and dentry compare functions. Both access ntfs3 superblock private information in rcu pathwalk. ntfs_put_super() and ntfs3_kill_sb() drop the info without any rcu delay. A lookup that's still inside the filesystem when the last reference to the mount is dropped causes a UAF. With a pathwalk held up in ntfs_d_hash() while the last reference to the mount goes away:

BUG: KASAN: slab-use-after-free in ntfs_nls_to_utf16+0x752/0x940 Read of size 8 at addr ff1100010453c850 by task walker/99 Call Trace: <TASK> ntfs_nls_to_utf16+0x752/0x940 ntfs_d_hash+0x22b/0x500 link_path_walk+0x11ad/0x1d30 path_lookupat+0x63/0xb00 filename_lookup+0x1f1/0x5b0 vfs_statx+0xd7/0x3b0 [...] Allocated by task 95: __kmalloc_cache_noprof+0x249/0x560 ntfs_init_fs_context+0x2db/0x5a0 alloc_fs_context+0x52e/0xc70 [...] Freed by task 98: kfree+0x1db/0x5b0 deactivate_locked_super+0x9c/0xf0 cleanup_mnt+0x9f/0x130 task_work_run+0x131/0x250

The bug is currently masked by the grace period in namespace_unlock() for umount(2). Keep the necessary information until the filesystem private info is freed and free it with an rcu delay.

ntfs3_free_sbi() now runs from an rcu callback and drops the upcase table via ntfs_put_shared(). So switch s_shared_lock over to spin_lock_bh(). Otherwise the callback can deadlock against a task holding the lock on the same cpu.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • a3a956c78efaa202b1d75190136671cf6e87bfbe to before c39150784a801dbbfaf4fbfa284cb610552a5039Affected
  • a3a956c78efaa202b1d75190136671cf6e87bfbe to before 36e6753daf9bb64563dcb5a3bb22f7699d973fa2Affected
  • a3a956c78efaa202b1d75190136671cf6e87bfbe to before c8b1a4840467930e01f1a9374d991d7a8a2896c1Affected
  • a3a956c78efaa202b1d75190136671cf6e87bfbe to before 7abecef26a9be8f9de70659a3092250461a52072Affected
  • a3a956c78efaa202b1d75190136671cf6e87bfbe to before c01b091b06412d3b1b53d8c2925f6de586c8a2fcAffected
LinuxLinux
  • 6.2Affected
  • before 6.2Not affected
  • 6.6.161 through 6.6.*Not affected
  • 6.12.115 through 6.12.*Not affected
  • 6.18.59 through 6.18.*Not affected
  • 7.2.13 through 7.2.*Not affected
  • 7.3 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.