CVE-2026-99174

ext4: 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:

ext4: free the sbi after a grace period

ext4_get_link() follows a symlink that keeps its target in a data block in rcu pathwalk mode with ext4_getblk(EXT4_GET_BLOCKS_CACHED_NOWAIT). That reads s_mount_state in the ASSERT() of ext4_getblk() and again in ext4_es_lookup_extent(), and the lookup bumps the extent status hit or miss counter, all through sb->s_fs_info.

ext4_put_super() destroys those counters, clears sb->s_fs_info and frees the sbi without waiting for a grace period. A pathwalk that is still in ext4_get_link() when the last reference to the mount goes away then dereferences a NULL s_fs_info, the freed sbi or the destroyed percpu counters.

With a pathwalk held up in ext4_get_link() while the last reference goes away:

KASAN: null-ptr-deref in range [0x00000000000000a8-0x00000000000000af] RIP: 0010:ext4_getblk+0xf0/0x640 Call Trace: <TASK> ext4_get_link+0x26c/0x410 pick_link+0xf96/0x1780 step_into_slowpath+0x9b8/0x1250 path_lookupat+0x484/0xb00 filename_lookup+0x1f1/0x5b0 vfs_statx+0xd7/0x3b0 vfs_fstatat+0x4d/0x90 __do_sys_newfstatat+0xa0/0x100 do_syscall_64+0x10e/0x5e0 entry_SYSCALL_64_after_hwframe+0x77/0x7f

So far that has been hard to hit. umount(2) waits for a grace period in namespace_unlock() before it drops the mount, so only a mount whose last reference goes away elsewhere, like the close of a file or a chdir out of a lazily unmounted directory, can race a walker.

Keep sb->s_fs_info and free the sbi together with the extent status counters after a grace period. Split the counters out of ext4_es_unregister_shrinker() for that. The shrinker still gets wasted in ext4_put_super(), the counters go with the sbi.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 6493792d3299b3e33f887ef8a150099d271faf9c to before cf3bd5824c985b350d150bcd76698ee5e993fcbaAffected
  • 6493792d3299b3e33f887ef8a150099d271faf9c to before b4b0598fad51a978fcbda9d55eef6b5bd3cbe7d8Affected
  • 6493792d3299b3e33f887ef8a150099d271faf9c to before 4ce0e27ea610663a9cdc04e3bca38559147428d4Affected
  • 6493792d3299b3e33f887ef8a150099d271faf9c to before 80d5db1686b05fad6f384be017714297d828a714Affected
  • 6493792d3299b3e33f887ef8a150099d271faf9c to before 87d29b8b849738d52fe820d495fa0aa2d5a1ec82Affected
  • 6493792d3299b3e33f887ef8a150099d271faf9c to before c17b44266a1f9fcb49b894d4611d1254bf1aa313Affected
LinuxLinux
  • 5.19Affected
  • before 5.19Not affected
  • 6.1.191 through 6.1.*Not 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.