]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
f2fs: fix fs corruption due to zero inode page
authorJaegeuk Kim <jaegeuk@kernel.org>
Wed, 12 Apr 2017 02:01:26 +0000 (19:01 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 May 2017 12:49:49 +0000 (14:49 +0200)
commite71f099677c18c7c7d9363dc9e89d27fe4a33b06
tree894bf56416ebfb72ef39f3bac8a0499eb15698d0
parented4d26a1e45b1cd0d2290cb50e9ab38ef74e0579
f2fs: fix fs corruption due to zero inode page

commit 9bb02c3627f46e50246bf7ab957b56ffbef623cb upstream.

This patch fixes the following scenario.

- f2fs_create/f2fs_mkdir             - write_checkpoint
 - f2fs_mark_inode_dirty_sync         - block_operations
                                       - f2fs_lock_all
                                       - f2fs_sync_inode_meta
                                        - f2fs_unlock_all
                                        - sync_inode_metadata
 - f2fs_lock_op
                                         - f2fs_write_inode
                                          - update_inode_page
                                           - get_node_page
                                             return -ENOENT
 - new_inode_page
  - fill_node_footer
 - f2fs_mark_inode_dirty_sync
 - ...
 - f2fs_unlock_op
                                          - f2fs_inode_synced
                                       - f2fs_lock_all
                                       - do_checkpoint

In this checkpoint, we can get an inode page which contains zeros having valid
node footer only.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/f2fs/inode.c
fs/f2fs/namei.c