Description
In the Linux kernel, the following vulnerability has been resolved: f2fs: fix fsck inconsistency caused by FGGC of node block During FGGC node block migration, fsck may incorrectly treat the migrated node block as fsync-written data. The reproduction scenario: root@vm:/mnt/f2fs# seq 1 2048 | xargs -n 1 ./test_sync // write inline inode and sync root@vm:/mnt/f2fs# rm -f 1 root@vm:/mnt/f2fs# sync root@vm:/mnt/f2fs# f2fs_io gc_range // move data block in sync mode and not write CP SPO, "fsck --dry-run" find inode has already checkpointed but still with DENT_BIT_SHIFT set The root cause is that GC does not clear the dentry mark and fsync mark during node block migration, leading fsck to misinterpret them as user-issued fsync writes. In BGGC mode, node block migration is handled by f2fs_sync_node_pages(), which guarantees the dentry and fsync marks are cleared before writing. This patch move the set/clear of the fsync|dentry marks into __write_node_folio to make the logic clearer, and ensures the fsync|dentry mark is cleared in FGGC.
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
da011cc0da8cf4a60ddf4d2ae8b42902a3d71e5f to < 3b7a0bbb3444addddb139f42a74ab4492052fa27affectedda011cc0da8cf4a60ddf4d2ae8b42902a3d71e5f to < d1820a5814eadb8e63ab6c7c8d04e28ce49836beaffectedda011cc0da8cf4a60ddf4d2ae8b42902a3d71e5f to < 8ac93964658d0649337dcb3f6e38d77f8cdd86f3affectedda011cc0da8cf4a60ddf4d2ae8b42902a3d71e5f to < 8be551f538dc5b64183e27bd45a7a0795263f760affectedda011cc0da8cf4a60ddf4d2ae8b42902a3d71e5f to < e7c6d30169b03307d27c4479563df79c08f3a746affectedda011cc0da8cf4a60ddf4d2ae8b42902a3d71e5f to < c3e238bd1f56993f205ef83889d406dfeaf717a8affected
Linux Linux
Default version status: affected
4.7affected0 to < 4.7unaffected6.1.191 to ≤ 6.1.*unaffected6.6.160 to ≤ 6.6.*unaffected6.12.114 to ≤ 6.12.*unaffected6.18.30 to ≤ 6.18.*unaffected7.0.7 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/3b7a0bbb3444addddb139f42a74ab4492052fa27 ↗
- https://git.kernel.org/stable/c/d1820a5814eadb8e63ab6c7c8d04e28ce49836be ↗
- https://git.kernel.org/stable/c/8ac93964658d0649337dcb3f6e38d77f8cdd86f3 ↗
- https://git.kernel.org/stable/c/8be551f538dc5b64183e27bd45a7a0795263f760 ↗
- https://git.kernel.org/stable/c/e7c6d30169b03307d27c4479563df79c08f3a746 ↗
- https://git.kernel.org/stable/c/c3e238bd1f56993f205ef83889d406dfeaf717a8 ↗