CVE-2026-23267 in Linuxinfo

Zusammenfassung

von VulDB • 13.06.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

f2fs: Behebung der Inkonsistenz des IS_CHECKPOINTED-Flags, verursacht durch gleichzeitige atomare Commits und Checkpoint-Schreibvorgänge

Während SPO-Tests (Single Point of Failure) wurde beim Einhängen von F2FS ein -EINVAL-Fehler aus f2fs_recover_inode_page zurückgegeben. Das Problem trat unter dem folgenden Szenario auf:

Thread A Thread B f2fs_ioc_commit_atomic_write - f2fs_do_sync_file // atomic = true - f2fs_fsync_node_pages : last_folio = inode folio : schedule vor folio_lock(last_folio) f2fs_write_checkpoint - block_operations// writeback von last_folio - schedule vor f2fs_flush_nat_entries : set_fsync_mark(last_folio, 1) : set_dentry_mark(last_folio, 1) : folio_mark_dirty(last_folio) - __write_node_folio(last_folio) : f2fs_down_read(&sbi->node_write)//blockiert - f2fs_flush_nat_entries : {struct nat_entry}->flag |= BIT(IS_CHECKPOINTED)
- unblock_operations : f2fs_up_write(&sbi->node_write) f2fs_write_checkpoint//Rückgabe : f2fs_do_write_node_page() f2fs_ioc_commit_atomic_write//Rückgabe SPO

Thread A ruft f2fs_need_dentry_mark(sbi, ino) auf, und last_folio wurde bereits einmal geschrieben. Das {struct nat_entry}->flag hatte jedoch IS_CHECKPOINTED nicht gesetzt, was dazu führte, dass set_dentry_mark(last_folio, 1) ausgeführt und last_folio nach Abschluss von f2fs_write_checkpoint durch Thread B erneut geschrieben wurde.

Nach einem SPO und Neustart wurde festgestellt, dass {struct node_info}->blk_addr != NULL_ADDR war, da Thread B den Checkpoint erfolgreich schrieb.

Dieses Problem tritt nur in atomaren Schreibszenarien auf. Bei regulären fsync-Vorgängen für Dateien muss das Folio schreibbereit (dirty) sein. Wenn block_operations->f2fs_sync_node_pages die Folioschreibung erfolgreich einreicht, wird dieser Pfad nicht ausgeführt. Andernfalls muss f2fs_write_checkpoint warten, bis die Einreichung der Folioschreibung abgeschlossen ist, da sbi->nr_pages[F2FS_DIRTY_NODES] > 0 gilt. Daher tritt die Situation nicht auf, in der f2fs_need_dentry_mark prüft, dass das {struct nat_entry}->flag ohne IS_CHECKPOINTED-Flag gesetzt ist, während die Folioschreibung bereits eingereicht wurde.

Daher sollte für atomare Datei-fsync-Vorgänge sbi->node_write über __write_node_folio erworben werden, um sicherzustellen, dass das IS_CHECKPOINTED-Flag korrekt anzeigt, dass der Checkpoint-Schreibvorgang abgeschlossen ist.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Linux

Reservieren

13.01.2026

Veröffentlichung

18.03.2026

Moderieren

akzeptiert

Eintrag

VDB-351566

CPE

bereit

EPSS

0.00114

KEV

nein

Aktivitäten

very low

Quellen

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!