CVE-2026-53017

f2fs: fix data loss caused by incorrect use of nat_entry flag

State
Published
Severity
Not scored
Published
Jun 24, 2026
Updated
Oct 30, 2026
Reserved
Jun 9, 2026

Read the record on cve.org

Description

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

f2fs: fix data loss caused by incorrect use of nat_entry flag

Data loss can occur when fsync is performed on a newly created file (before any checkpoint has been written) concurrently with a checkpoint operation. The scenario is as follows:

create & write & fsync 'file A' write checkpoint - f2fs_do_sync_file // inline inode - f2fs_write_inode // inode folio is dirty - f2fs_write_checkpoint - f2fs_flush_merged_writes - f2fs_sync_node_pages - f2fs_flush_nat_entries - f2fs_fsync_node_pages // no dirty node - f2fs_need_inode_block_update // return false SPO and lost 'file A'

f2fs_flush_nat_entries() sets the IS_CHECKPOINTED and HAS_LAST_FSYNC flags for the nat_entry, but this does not mean that the checkpoint has actually completed successfully. However, f2fs_need_inode_block_update() checks these flags and incorrectly assumes that the checkpoint has finished.

The root cause is that the semantics of IS_CHECKPOINTED and HAS_LAST_FSYNC are only guaranteed after the checkpoint write fully completes.

This patch modifies f2fs_need_inode_block_update() to acquire the sbi->node_write lock before reading the nat_entry flags, ensuring that once IS_CHECKPOINTED and HAS_LAST_FSYNC are observed to be set, the checkpoint operation has already completed.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • e05df3b115e7308afbca652769b54e4549fcc723 to before eb65e8c7bd0a78a470cbdd3ff96232ba4a2ace89Affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to before 0645fa4d48e9b77d93f8b7a1c1fea58a97c2f8b0Affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to before 9fd3bcb54a6afea5fa8a828d010561143560b7c5Affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to before cb06a07d835ba1ea250785a796243bb483e65816Affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to before 20cedb4d9f6b230d0ee469690b8f868f06a07c29Affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to before 238e14eb7226f883b72caccd2d37bf5707df066bAffected
LinuxLinux
  • 3.8Affected
  • before 3.8Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.114 through 6.12.*Not affected
  • 6.18.57 through 6.18.*Not affected
  • 7.0.10 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.