9.4

CVE-2026-31448: ext4: avoid infinite loops caused by residual data

Modified
AliasesUBUNTU-CVE-2026-31448DEBIAN-CVE-2026-31448
Published 22-04-2026Last modified 19-10-2026

Vulnerability summary

CVE-2026-31448 is a critical (CVSS 9.4) Loop with Unreachable Exit Condition vulnerability in linux. EPSS estimates a 0.50% chance of exploitation in the next 30 days, higher than 42.7% of scored vulnerabilities.

Priority
Prioritisesevere

Severe, CVSS 9.4 (CVE.org); no exploitation reported by the 5 checked sources; EPSS 0% (FIRST, 03-11-2026)

Source freshness unavailable

How is this decided?
CVSS score
9.4/10
010
Critical · v3.1 (CVE.org)
EPSS score
0.50%
0%100%
Low · -0.15 pp in 30 days
KEVNot listedNot listed by any tracked catalog.
RansomwareNot flaggedNo ransomware use recorded.
Public exploits0No public exploits recorded

Advisory lineage

Upstream 0 · Downstream 49 · Related 53

Timeline

  1. 22-04-2026
    PublishedVulnerability first disclosed.
  2. 19-10-2026
    Last modifiedVulnerability information updated.

Description

In the Linux kernel, the following vulnerability has been resolved: ext4: avoid infinite loops caused by residual data On the mkdir/mknod path, when mapping logical blocks to physical blocks, if inserting a new extent into the extent tree fails (in this example, because the file system disabled the huge file feature when marking the inode as dirty), ext4_ext_map_blocks() only calls ext4_free_blocks() to reclaim the physical block without deleting the corresponding data in the extent tree. This causes subsequent mkdir operations to reference the previously reclaimed physical block number again, even though this physical block is already being used by the xattr block. Therefore, a situation arises where both the directory and xattr are using the same buffer head block in memory simultaneously. The above causes ext4_xattr_block_set() to enter an infinite loop about "inserted" and cannot release the inode lock, ultimately leading to the 143s blocking problem mentioned in [1]. If the metadata is corrupted, then trying to remove some extent space can do even more harm. Also in case EXT4_GET_BLOCKS_DELALLOC_RESERVE was passed, remove space wrongly update quota information. Jan Kara suggests distinguishing between two cases: 1) The error is ENOSPC or EDQUOT - in this case the filesystem is fully consistent and we must maintain its consistency including all the accounting. However these errors can happen only early before we've inserted the extent into the extent tree. So current code works correctly for this case. 2) Some other error - this means metadata is corrupted. We should strive to do as few modifications as possible to limit damage. So I'd just skip freeing of allocated blocks. [1] INFO: task syz.0.17:5995 blocked for more than 143 seconds. Call Trace: inode_lock_nested include/linux/fs.h:1073 [inline] __start_dirop fs/namei.c:2923 [inline] start_dirop fs/namei.c:2934 [inline]

CVSS metrics

4 scores · 4 sources · 1 version

EPSS trend

Probability

0.50%

Chance of exploitation in the next 30 days

Percentile

43%

Versus all other CVEs

30-day change

Decrease -0.15 pp

From 0.65% on 04-10-2026

04-10-202603-11-2026

Known exploited

Compare KEV catalogs
CISA KEV

Not in the CISA KEV catalog.

ENISA CNW

Not in the ENISA CNW catalog.

CIRCL

Not in the CIRCL catalog.

Public exploits

0 found

No public exploits indexed.

Weaknesses

CWE · root cause

Affected systems

Version check

Known conditions: network-reachable, no authentication, no user interaction (CVSS vector). Other conditions: not stated in public data.

Ubuntu157 products
  • linux< 3.13.0-215.266 | < 4.4.0-284.318 | < 4.15.0-254.266 | < 5.4.0-234.254 | < 5.15.0-187.197 | < 6.8.0-134.134 | < 6.17.0-40.40
  • linux-allwinner-5.19All versions (No fix recorded)
  • linux-aws< 4.4.0-1157.163 | < 4.4.0-1195.210 | < 4.15.0-1195.208 | < 5.4.0-1162.173 | < 5.15.0-1113.120 | < 6.8.0-1060.63 | < 6.17.0-1019.19
  • linux-aws-5.0All versions (No fix recorded)
  • linux-aws-5.11All versions (No fix recorded)
Linux2 products
  • linux≥ 315054f023d28ee64f308adf8b5737831541776b, < c66545e83a802c3851d9be27a41c0479dd29ff0c | ≥ 315054f023d28ee64f308adf8b5737831541776b, < ecc50bfca9b5c2ee6aeef998181689b80477367b | ≥ 315054f023d28ee64f308adf8b5737831541776b, < 3a7667595bcad84da53fc156a418e110267c3412 | ≥ 315054f023d28ee64f308adf8b5737831541776b, < 416c86f30f91b4fb2642ef6b102596ca898f41a5 | ≥ 315054f023d28ee64f308adf8b5737831541776b, < 64f425b06b3bea9abc8977fd3982779b3ad070c9 | ≥ 315054f023d28ee64f308adf8b5737831541776b, < 5422fe71d26d42af6c454ca9527faaad4e677d6c | 2.6.22
  • linux_kernel≥ 2.6.22.1, < 6.1.168 | ≥ 6.2, < 6.6.131 | ≥ 6.7, < 6.12.80 | ≥ 6.13, < 6.18.21 | ≥ 6.19, < 6.19.11 | 2.6.22 | 2.6.22:rc4 | 2.6.22:rc5 | 2.6.22:rc6 | 2.6.22:rc7 | 7.0:rc1 | 7.0:rc2 | 7.0:rc3 | 7.0:rc4 | 7.0:rc5
Debian1 product
  • linux< 6.1.170-1 | < 6.12.85-1 | < 6.19.11-1

3 vendors · 160 products

References

56 links
Show all 56 references