CVE-2024-50229: nilfs2: fix potential deadlock with newly created symlinks

Published Nov 9, 2024
·
Updated

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

nilfs2: fix potential deadlock with newly created symlinks

Syzbot reported that pagesymlink(), called by nilfssymlink(), triggers memory reclamation involving the filesystem layer, which can result in circular lock dependencies among the reader/writer semaphore nilfs->nssegctorsem, swriters percpurwsem (intwrite) and the fsreclaim pseudo lock.

This is because after commit 21fc61c73c39 ("don't put symlink bodies in pagecache into highmem"), the gfp flags of the page cache for symbolic links are overwritten to GFPKERNEL via inodenohighmem().

This is not a problem for symlinks read from the backing device, because the GFPFS flag is dropped after inodenohighmem() is called. However, when a new symlink is created with nilfssymlink(), the gfp flags remain overwritten to GFPKERNEL. Then, memory allocation called from pagesymlink() etc. triggers memory reclamation including the FS layer, which may call nilfsevictinode() or nilfsdirtyinode(). And these can cause a deadlock if they are called while nilfs->nssegctorsem is held:

Fix this issue by dropping the GFPFS flag from the page cache GFP flags of newly created symlinks in the same way that nilfsnewinode() and nilfsreadinode() do, as a workaround until we adopt nofs allocation scope consistently or improve the locking constraints.

Other sources

This CVE was automatically created from a reference found in an email or other text. If you are reading this, then this CVE entry is probably erroneous, since this text should be replaced by the official CVE description automatically.

Launchpad

Affected Software

19 affected componentsFixes available
Linux Linux kernel>=4.5<4.19.323
Linux Linux kernel>=4.20<5.4.285
Linux Linux kernel>=5.5<5.10.229
Linux Linux kernel>=5.11<5.15.171
Linux Linux kernel>=5.16<6.1.116
Linux Linux kernel>=6.2<6.6.60
Linux Linux kernel>=6.7<6.11.7
Linux Linux kernel=4.4.116
Linux Linux kernel=6.12-rc1
Linux Linux kernel=6.12-rc2
Linux Linux kernel=6.12-rc3
Linux Linux kernel=6.12-rc4
Linux Linux kernel=6.12-rc5
debian/linux<=5.10.223-1
5.10.234-16.1.129-16.1.135-16.12.25-16.12.27-1
debian/linux-6.1
6.1.129-1~deb11u1
Microsoft cbl2 kernel 5.15.173.1-1<5.15.173.1-1
5.15.173.1-1
Microsoft cbl2 kernel 5.15.167.1-2<5.15.173.1-1
5.15.173.1-1
Microsoft azl3 kernel 6.6.64.2-1<6.6.64.2-1
6.6.64.2-1
Microsoft azl3 kernel 6.6.57.1-7<6.6.64.2-1
6.6.64.2-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 5.10.234-1Fixed in 6.1.129-1Fixed in 6.1.135-1Fixed in 6.12.25-1Fixed in 6.12.27-1
  2. Upgrade

    Upgrade debian/linux-6.1 to a version that resolves this vulnerability.

    Fixed in 6.1.129-1~deb11u1
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 5.15.173.1-1
  4. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.6.64.2-1
  5. Configuration

    Fix potential deadlock by ensuring the page cache GFP flags used for newly created symlink bodies (via nilfs_symlink() -> page_symlink()) have the __GFP_FS flag dropped, matching the workaround behavior used by nilfs_new_inode() and __nilfs_read_inode() until locking constraints/allocation scope are improved.

    Linux kernel (nilfs2) page cache GFP flags for newly created symlinks in nilfs_symlink()/page_symlink() = drop __GFP_FS from the page cache GFP flags (i.e., same behavior as nilfs_new_inode() and __nilfs_read_inode())
  6. Compensating control

    If newly created symlinks are being created/handled on NILFS2 under workload that can trigger memory reclamation while nilfs->ns_segctor_sem is held, reduce/avoid symlink creation during that critical filesystem locking context (work around the circular lock dependency involving nilfs->ns_segctor_sem, s_writers percpu_rwsem (intwrite), and fs_reclaim) until the GFP-flag workaround is applied.

Event History

Nov 9, 2024
CVE Published
via MITRE·10:14 AM
Data Sourced
via MITRE·10:14 AM
Description
Data Sourced
via NVD·11:15 AM
RemedyDescriptionSeverityWeaknessAffected Software
Dec 12, 2024
Data Sourced
via Microsoft·08:00 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·08:00 AM
Affected Software
Updated
via Microsoft·08:00 AM
Description
Updated
via Microsoft·08:00 AM
DescriptionSeverity
Feb 20, 2025
Data Sourced
via Launchpad·12:46 AM
Description
Apr 29, 2025
Data Sourced
via Ubuntu·01:00 AM
RemedyDescriptionSeverityAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2024-50229?

CVE-2024-50229 has a severity rating that may lead to potential deadlocks in systems using the Linux kernel.

2

How do I fix CVE-2024-50229?

To fix CVE-2024-50229, you should update your Linux kernel to a version where this vulnerability has been resolved.

3

What versions of Linux kernel are affected by CVE-2024-50229?

CVE-2024-50229 affects multiple versions of the Linux kernel ranging from 4.4.116 to 6.12-rc5.

4

What is the impact of CVE-2024-50229 on my system?

The impact of CVE-2024-50229 may include the potential for deadlocks during symlink operations in the nilfs2 filesystem.

5

Who reported the CVE-2024-50229 vulnerability?

The CVE-2024-50229 vulnerability was reported by Syzbot.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203