CVE-2026-31452
Severity CVSS v4.0:
Pending analysis
Type:
CWE-787
Out-of-bounds Write
Publication date:
22/04/2026
Last modified:
06/05/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ext4: convert inline data to extents when truncate exceeds inline size<br />
<br />
Add a check in ext4_setattr() to convert files from inline data storage<br />
to extent-based storage when truncate() grows the file size beyond the<br />
inline capacity. This prevents the filesystem from entering an<br />
inconsistent state where the inline data flag is set but the file size<br />
exceeds what can be stored inline.<br />
<br />
Without this fix, the following sequence causes a kernel BUG_ON():<br />
<br />
1. Mount filesystem with inode that has inline flag set and small size<br />
2. truncate(file, 50MB) - grows size but inline flag remains set<br />
3. sendfile() attempts to write data<br />
4. ext4_write_inline_data() hits BUG_ON(write_size > inline_capacity)<br />
<br />
The crash occurs because ext4_write_inline_data() expects inline storage<br />
to accommodate the write, but the actual inline capacity (~60 bytes for<br />
i_block + ~96 bytes for xattrs) is far smaller than the file size and<br />
write request.<br />
<br />
The fix checks if the new size from setattr exceeds the inode&#39;s actual<br />
inline capacity (EXT4_I(inode)->i_inline_size) and converts the file to<br />
extent-based storage before proceeding with the size change.<br />
<br />
This addresses the root cause by ensuring the inline data flag and file<br />
size remain consistent during truncate operations.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.8 (including) | 5.10.253 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.203 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.168 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.131 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.80 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.21 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 6.19.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:* |
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/07c1a31af18290054da3d18221b8bf58983c5d3a
- https://git.kernel.org/stable/c/110d7ef602659ce4d7947c5480f7ca2779696aaf
- https://git.kernel.org/stable/c/699bac4d4c951974d55b045c983d1de777215949
- https://git.kernel.org/stable/c/7920dcc571cef3d8aa9ee109c136125d61d41669
- https://git.kernel.org/stable/c/93cb2d103e5c707de0f7ad58a39b7f0fddc27aa6
- https://git.kernel.org/stable/c/c047332be7195833a5c5126816c2502df8269fe4
- https://git.kernel.org/stable/c/ed9356a30e59c7cc3198e7fc46cfedf3767b9b17
- https://git.kernel.org/stable/c/f53a5d9f32924bc2a810d2df243b7714da58b636



