CVE-2024-47669
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
09/10/2024
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
nilfs2: fix state management in error path of log writing function<br />
<br />
After commit a694291a6211 ("nilfs2: separate wait function from<br />
nilfs_segctor_write") was applied, the log writing function<br />
nilfs_segctor_do_construct() was able to issue I/O requests continuously<br />
even if user data blocks were split into multiple logs across segments,<br />
but two potential flaws were introduced in its error handling.<br />
<br />
First, if nilfs_segctor_begin_construction() fails while creating the<br />
second or subsequent logs, the log writing function returns without<br />
calling nilfs_segctor_abort_construction(), so the writeback flag set on<br />
pages/folios will remain uncleared. This causes page cache operations to<br />
hang waiting for the writeback flag. For example,<br />
truncate_inode_pages_final(), which is called via nilfs_evict_inode() when<br />
an inode is evicted from memory, will hang.<br />
<br />
Second, the NILFS_I_COLLECTED flag set on normal inodes remain uncleared. <br />
As a result, if the next log write involves checkpoint creation, that&#39;s<br />
fine, but if a partial log write is performed that does not, inodes with<br />
NILFS_I_COLLECTED set are erroneously removed from the "sc_dirty_files"<br />
list, and their data and b-tree blocks may not be written to the device,<br />
corrupting the block mapping.<br />
<br />
Fix these issues by uniformly calling nilfs_segctor_abort_construction()<br />
on failure of each step in the loop in nilfs_segctor_do_construct(),<br />
having it clean up logs and segment usages according to progress, and<br />
correcting the conditions for calling nilfs_redirty_inodes() to ensure<br />
that the NILFS_I_COLLECTED flag is cleared.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 2.6.33 (including) | 4.19.322 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.284 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.226 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.167 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.110 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.51 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.10.10 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.11:rc6:*:*:*:*:*:* |
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/036441e8438b29111fa75008f0ce305fb4e83c0a
- https://git.kernel.org/stable/c/0a1a961bde4351dc047ffdeb2f1311ca16a700cc
- https://git.kernel.org/stable/c/30562eff4a6dd35c4b5be9699ef61ad9f5f20a06
- https://git.kernel.org/stable/c/3e349d7191f0688fc9808ef24fd4e4b4ef5ca876
- https://git.kernel.org/stable/c/40a2757de2c376ef8a08d9ee9c81e77f3c750adf
- https://git.kernel.org/stable/c/6576dd6695f2afca3f4954029ac4a64f82ba60ab
- https://git.kernel.org/stable/c/74866c16ea2183f52925fa5d76061a1fe7f7737b
- https://git.kernel.org/stable/c/efdde00d4a1ef10bb71e09ebc67823a3d3ad725b
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html



