CVE-2024-26696

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-26696
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-26696.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-26696
Downstream
Related
Published
2024-04-03T14:54:56.926Z
Modified
2025-11-28T02:34:03.486591Z
Summary
nilfs2: fix hang in nilfs_lookup_dirty_data_buffers()
Details

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

nilfs2: fix hang in nilfslookupdirtydatabuffers()

Syzbot reported a hang issue in migratepagesbatch() called by mbind() and nilfslookupdirtydatabuffers() called in the log writer of nilfs2.

While migratepagesbatch() locks a folio and waits for the writeback to complete, the log writer thread that should bring the writeback to completion picks up the folio being written back in nilfslookupdirtydatabuffers() that it calls for subsequent log creation and was trying to lock the folio. Thus causing a deadlock.

In the first place, it is unexpected that folios/pages in the middle of writeback will be updated and become dirty. Nilfs2 adds a checksum to verify the validity of the log being written and uses it for recovery at mount, so data changes during writeback are suppressed. Since this is broken, an unclean shutdown could potentially cause recovery to fail.

Investigation revealed that the root cause is that the wait for writeback completion in nilfspagemkwrite() is conditional, and if the backing device does not require stable writes, data may be modified without waiting.

Fix these issues by making nilfspagemkwrite() wait for writeback to finish regardless of the stable write requirement of the backing device.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/26xxx/CVE-2024-26696.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1d1d1a767206fbe5d4c69493b7e6d2a8d08cc0a0
Fixed
228742b2ddfb99dfd71e5a307e6088ab6836272e
Fixed
862ee4422c38be5c249844a684b00d0dbe9d1e46
Fixed
98a4026b22ff440c7f47056481bcbbe442f607d6
Fixed
7e9b622bd0748cc104d66535b76d9b3535f9dc0f
Fixed
8494ba2c9ea00a54d5b50e69b22c55a8958bce32
Fixed
ea5ddbc11613b55e5128c85f57b08f907abd9b28
Fixed
e38585401d464578d30f5868ff4ca54475c34f7d
Fixed
38296afe3c6ee07319e01bb249aa4bb47c07b534

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
3.9.0
Fixed
4.19.307
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.269
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.210
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.149
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.79
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.18
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.7.6