CVE-2024-50229
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
09/11/2024
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
nilfs2: fix potential deadlock with newly created symlinks<br />
<br />
Syzbot reported that page_symlink(), called by nilfs_symlink(), triggers<br />
memory reclamation involving the filesystem layer, which can result in<br />
circular lock dependencies among the reader/writer semaphore<br />
nilfs->ns_segctor_sem, s_writers percpu_rwsem (intwrite) and the<br />
fs_reclaim pseudo lock.<br />
<br />
This is because after commit 21fc61c73c39 ("don&#39;t put symlink bodies in<br />
pagecache into highmem"), the gfp flags of the page cache for symbolic<br />
links are overwritten to GFP_KERNEL via inode_nohighmem().<br />
<br />
This is not a problem for symlinks read from the backing device, because<br />
the __GFP_FS flag is dropped after inode_nohighmem() is called. However,<br />
when a new symlink is created with nilfs_symlink(), the gfp flags remain<br />
overwritten to GFP_KERNEL. Then, memory allocation called from<br />
page_symlink() etc. triggers memory reclamation including the FS layer,<br />
which may call nilfs_evict_inode() or nilfs_dirty_inode(). And these can<br />
cause a deadlock if they are called while nilfs->ns_segctor_sem is held:<br />
<br />
Fix this issue by dropping the __GFP_FS flag from the page cache GFP flags<br />
of newly created symlinks in the same way that nilfs_new_inode() and<br />
__nilfs_read_inode() do, as a workaround until we adopt nofs allocation<br />
scope consistently or improve the locking constraints.
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:*:*:*:*:*:*:*:* | 4.5 (including) | 4.19.323 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.285 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.229 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.171 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.116 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.60 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.11.7 (excluding) |
| cpe:2.3:o:linux:linux_kernel:4.4.116:*:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.12:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.12:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.12:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.12:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.12:rc5:*:*:*:*:*:* |
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/1246d86e7bbde265761932c6e2dce28c69cdcb91
- https://git.kernel.org/stable/c/58c7f44c7b9e5ac7e3b1e5da2572ed7767a12f38
- https://git.kernel.org/stable/c/69548bb663fcb63f9ee0301be808a36b9d78dac3
- https://git.kernel.org/stable/c/9aa5d43ac4cace8fb9bd964ff6c23f599dc3cd24
- https://git.kernel.org/stable/c/a1686db1e59f8fc016c4c9361e2119dd206f479a
- https://git.kernel.org/stable/c/b3a033e3ecd3471248d474ef263aadc0059e516a
- https://git.kernel.org/stable/c/c72e0df0b56c1166736dc8eb62070ebb12591447
- https://git.kernel.org/stable/c/cc38c596e648575ce58bfc31623a6506eda4b94a
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html
- https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html



