CVE-2026-23267

Source
https://cve.org/CVERecord?id=CVE-2026-23267
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23267.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2026-23267
Downstream
Published
2026-03-18T17:46:09.116Z
Modified
2026-04-14T03:48:10.291504Z
Summary
f2fs: fix IS_CHECKPOINTED flag inconsistency issue caused by concurrent atomic commit and checkpoint writes
Details

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

f2fs: fix IS_CHECKPOINTED flag inconsistency issue caused by concurrent atomic commit and checkpoint writes

During SPO tests, when mounting F2FS, an -EINVAL error was returned from f2fsrecoverinode_page. The issue occurred under the following scenario

Thread A Thread B f2fsioccommitatomicwrite - f2fsdosyncfile // atomic = true - f2fsfsyncnodepages : lastfolio = inode folio : schedule before foliolock(lastfolio) f2fswritecheckpoint - blockoperations// writeback lastfolio - schedule before f2fsflushnatentries : setfsyncmark(lastfolio, 1) : setdentrymark(lastfolio, 1) : foliomarkdirty(last_folio) - _writenodefolio(lastfolio) : f2fsdownread(&sbi->nodewrite)//block - f2fsflushnatentries : {struct natentry}->flag |= BIT(ISCHECKPOINTED) - unblockoperations : f2fsupwrite(&sbi->nodewrite) f2fswritecheckpoint//return : f2fsdowritenodepage() f2fsioccommitatomicwrite//return SPO

Thread A calls f2fsneeddentrymark(sbi, ino), and the lastfolio has already been written once. However, the {struct natentry}->flag did not have the ISCHECKPOINTED set, causing setdentrymark(lastfolio, 1) and write lastfolio again after Thread B finishes f2fswritecheckpoint.

After SPO and reboot, it was detected that {struct nodeinfo}->blkaddr was not NULL_ADDR because Thread B successfully write the checkpoint.

This issue only occurs in atomic write scenarios. For regular file fsync operations, the folio must be dirty. If blockoperations->f2fssyncnodepages successfully submit the folio write, this path will not be executed. Otherwise, the f2fswritecheckpoint will need to wait for the folio write submission to complete, as sbi->nrpages[F2FSDIRTYNODES] > 0. Therefore, the situation where f2fsneeddentrymark checks that the {struct natentry}->flag /wo the ISCHECKPOINTED flag, but the folio write has already been submitted, will not occur.

Therefore, for atomic file fsync, sbi->node_write should be acquired through _writenodefolio to ensure that the ISCHECKPOINTED flag correctly indicates that the checkpoint write has been completed.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23267.json",
    "cna_assigner": "Linux"
}
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
608514deba38c8611ad330d6a3c8e2b9a1f68e4b
Fixed
32bc3c9fe18881d50dd51fd5f26d19fe1190dc0d
Fixed
75e19da068adf0dc5dd269dd157392434b9117d4
Fixed
962c167b0f262b9962207fbeaa531721d55ea00e
Fixed
bd66b4c487d5091d2a65d6089e0de36f0c26a4c7
Fixed
ed81bc5885460905f9160e7b463e5708fd056324
Fixed
7633a7387eb4d0259d6bea945e1d3469cd135bbc

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23267.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.7.0
Fixed
6.1.164
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.127
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.74
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.13
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
6.19.3

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23267.json"