Executive brief
A vulnerability was identified in the Linux kernel's ext4 filesystem driver where certain error conditions during a filesystem shutdown could cause internal block counters to become inconsistent. This issue primarily manifests as system warnings or potential stability issues when unmounting a filesystem that has experienced unexpected shutdowns or heavy stress. While it does not directly expose user data, it represents a flaw in how the system manages disk space reservations during failure scenarios.
Technical details
A logic error in the ext4 filesystem driver's multi-block allocator (mballoc) caused a double decrement of the 's_dirtyclusters_counter' during filesystem shutdown or error injection tests. The issue occurred in the error path between 'ext4_mb_mark_diskspace_used()' and its caller 'ext4_mb_new_blocks()'. When 'ext4_handle_dirty_metadata()' returned an error due to a shutdown, 'ext4_mb_mark_diskspace_used()' would decrement the cluster counters before returning the error; the caller would then fall into an error path that decremented the same counter a second time. This resulted in the counter underflowing to -1, triggering a kernel warning in 'ext4_put_super()'. The fix consolidates the counter reduction logic into a single location in the caller to ensure consistent ownership of cluster reservations.
Affected products
- Linux Linux kernel ext4 filesystem driver
Timeline
- 2026-05-27: disclosed: Initial disclosure and patch availability via kernel.org
- 2026-05-27: advisory: NVD publication of CVE-2026-45920
References
- https://git.kernel.org/stable/c/3924aea2c33df3864929c1acd178bfc29d8f005f
- https://git.kernel.org/stable/c/523d5a4df3c649fa305c89efb552ec62a1ce9d3d
- https://git.kernel.org/stable/c/55576fa14771d33994c29a9ae960e07bb3f56c20
- https://git.kernel.org/stable/c/61e372122b6d95aec940fdaea0a16f988f359897
- https://git.kernel.org/stable/c/81982a11406c5da6c6e2b188028e7056e16b7128
- https://git.kernel.org/stable/c/94a8cea54cd935c54fa2fba70354757c0fc245e3
- https://git.kernel.org/stable/c/ca408af08544d96769c93a3d81a7f63f61129e95