CVE-2025-68264

ext4: refresh inline data size before write operations

State
Published
Severity
Not scored
Published
Dec 16, 2025
Updated
Oct 15, 2026
Reserved
Dec 16, 2025

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

ext4: refresh inline data size before write operations

The cached ei->i_inline_size can become stale between the initial size check and when ext4_update_inline_data()/ext4_create_inline_data() use it. Although ext4_get_max_inline_size() reads the correct value at the time of the check, concurrent xattr operations can modify i_inline_size before ext4_write_lock_xattr() is acquired.

This causes ext4_update_inline_data() and ext4_create_inline_data() to work with stale capacity values, leading to a BUG_ON() crash in ext4_write_inline_data():

kernel BUG at fs/ext4/inline.c:1331! BUG_ON(pos + len > EXT4_I(inode)->i_inline_size);

The race window: 1. ext4_get_max_inline_size() reads i_inline_size = 60 (correct) 2. Size check passes for 50-byte write 3. [Another thread adds xattr, i_inline_size changes to 40] 4. ext4_write_lock_xattr() acquires lock 5. ext4_update_inline_data() uses stale i_inline_size = 60 6. Attempts to write 50 bytes but only 40 bytes actually available 7. BUG_ON() triggers

Fix this by recalculating i_inline_size via ext4_find_inline_data_nolock() immediately after acquiring xattr_sem. This ensures ext4_update_inline_data() and ext4_create_inline_data() work with current values that are protected from concurrent modifications.

This is similar to commit a54c4613dac1 ("ext4: fix race writing to an inline_data file while its xattrs are changing") which fixed i_inline_off staleness. This patch addresses the related i_inline_size staleness issue.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 54ab81ae5f218452e64470cd8a8139bb5880fe2bAffected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 43bf001f0fe4e59bba47c897505222f959f4a1ccAffected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 89c2c41f0974e530b2d032c3695095aa0559adb1Affected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 1687a055a555347b002f406676a1aaae4668f242Affected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 210ac60a86a3ad2c76ae60e0dc71c34af6e7ea0bAffected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before ca43ea29b4c4d2764aec8a26cffcfb677a871e6eAffected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 58df743faf21ceb1880f930aa5dd428e2a5e415dAffected
  • 67cf5b09a46f72e048501b84996f2f77bc42e947 to before 892e1cf17555735e9d021ab036c36bc7b58b0e3bAffected
LinuxLinux
  • 3.8Affected
  • before 3.8Not affected
  • 5.10.248 through 5.10.*Not affected
  • 5.15.198 through 5.15.*Not affected
  • 6.1.160 through 6.1.*Not affected
  • 6.6.120 through 6.6.*Not affected
  • 6.12.62 through 6.12.*Not affected
  • 6.17.12 through 6.17.*Not affected
  • 6.18.1 through 6.18.*Not affected
  • 6.19 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.