CVE-2026-45912
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
27/05/2026
Last modified:
24/06/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ext4: don&#39;t cache extent during splitting extent<br />
<br />
Caching extents during the splitting process is risky, as it may result<br />
in stale extents remaining in the status tree. Moreover, in most cases,<br />
the corresponding extent block entries are likely already cached before<br />
the split happens, making caching here not particularly useful.<br />
<br />
Assume we have an unwritten extent, and then DIO writes the first half.<br />
<br />
[UUUUUUUUUUUUUUUU] on-disk extent U: unwritten extent<br />
[UUUUUUUUUUUUUUUU] extent status tree<br />
|| ----> dio write this range<br />
<br />
First, when ext4_split_extent_at() splits this extent, it truncates the<br />
existing extent and then inserts a new one. During this process, this<br />
extent status entry may be shrunk, and calls to ext4_find_extent() and<br />
ext4_cache_extents() may occur, which could potentially insert the<br />
truncated range as a hole into the extent status tree. After the split<br />
is completed, this hole is not replaced with the correct status.<br />
<br />
[UUUUUUU|UUUUUUUU] on-disk extent U: unwritten extent<br />
[UUUUUUU|HHHHHHHH] extent status tree H: hole<br />
<br />
Then, the outer calling functions will not correct this remaining hole<br />
extent either. Finally, if we perform a delayed buffer write on this<br />
latter part, it will re-insert the delayed extent and cause an error in<br />
space accounting.<br />
<br />
In adition, if the unwritten extent cache is not shrunk during the<br />
splitting, ext4_cache_extents() also conflicts with existing extents<br />
when caching extents. In the future, we will add checks when caching<br />
extents, which will trigger a warning. Therefore, Do not cache extents<br />
that are being split.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.12 (including) | 5.10.252 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.202 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.165 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.128 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.75 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.14 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 6.19.4 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/4c2d9dac4d328244f9365b0a1fa27ec802821820
- https://git.kernel.org/stable/c/5b1f4290453314e11cd8e15c7baa8a9b76c19b23
- https://git.kernel.org/stable/c/692103feca376ae4298c92aa8828015d20f1d87b
- https://git.kernel.org/stable/c/8302b5b4aacdbb378f7b1216bb2ee782b5142415
- https://git.kernel.org/stable/c/8b4b19a2f96348d70bfa306ef7d4a13b0bcbea79
- https://git.kernel.org/stable/c/93b2ebbbcb2e63cfc21a1946dfe91d3aa7952036
- https://git.kernel.org/stable/c/96007fd3c106aea773c1afae2d6f64cceb6da208
- https://git.kernel.org/stable/c/9a2b95cdaf07785e2739199037bd9c0863ccc1be



