CVE-2024-26704

Severity CVSS v4.0:
Pending analysis
Type:
CWE-415 Double Free
Publication date:
03/04/2024
Last modified:
14/01/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ext4: fix double-free of blocks due to wrong extents moved_len<br /> <br /> In ext4_move_extents(), moved_len is only updated when all moves are<br /> successfully executed, and only discards orig_inode and donor_inode<br /> preallocations when moved_len is not zero. When the loop fails to exit<br /> after successfully moving some extents, moved_len is not updated and<br /> remains at 0, so it does not discard the preallocations.<br /> <br /> If the moved extents overlap with the preallocated extents, the<br /> overlapped extents are freed twice in ext4_mb_release_inode_pa() and<br /> ext4_process_freed_data() (as described in commit 94d7c16cbbbd ("ext4:<br /> Fix double-free of blocks with EXT4_IOC_MOVE_EXT")), and bb_free is<br /> incremented twice. Hence when trim is executed, a zero-division bug is<br /> triggered in mb_update_avg_fragment_size() because bb_free is not zero<br /> and bb_fragments is zero.<br /> <br /> Therefore, update move_len after each extent move to avoid the issue.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.18 (including) 4.19.307 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (including) 5.4.269 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (including) 5.10.210 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.149 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.79 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.18 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.7.6 (excluding)
cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:*
cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:*