CVE-2026-31452
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
22/04/2026
Last modified:
22/04/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
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



