Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-53017

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

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.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • e05df3b115e7308afbca652769b54e4549fcc723 to < 0645fa4d48e9b77d93f8b7a1c1fea58a97c2f8b0affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to < 9fd3bcb54a6afea5fa8a828d010561143560b7c5affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to < cb06a07d835ba1ea250785a796243bb483e65816affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to < 20cedb4d9f6b230d0ee469690b8f868f06a07c29affected
  • e05df3b115e7308afbca652769b54e4549fcc723 to < 238e14eb7226f883b72caccd2d37bf5707df066baffected

Linux Linux

Default version status: affected

  • 3.8affected
  • 0 to < 3.8unaffected
  • 6.6.160 to ≤ 6.6.*unaffected
  • 6.12.114 to ≤ 6.12.*unaffected
  • 6.18.57 to ≤ 6.18.*unaffected
  • 7.0.10 to ≤ 7.0.*unaffected
  • 7.1 to ≤ *unaffected

References