linux-uconsole/fs/f2fs
Chao Yu f42b8aa313 f2fs: fix to avoid accessing uninitialized field of inode page in is_alive()
[ Upstream commit 9819403055 ]

If inode is newly created, inode page may not synchronize with inode cache,
so fields like .i_inline or .i_extra_isize could be wrong, in below call
path, we may access such wrong fields, result in failing to migrate valid
target block.

Thread A				Thread B
- f2fs_create
 - f2fs_add_link
  - f2fs_add_dentry
   - f2fs_init_inode_metadata
    - f2fs_add_inline_entry
     - f2fs_new_inode_page
     - f2fs_put_page
     : inode page wasn't updated with inode cache
					- gc_data_segment
					 - is_alive
					  - f2fs_get_node_page
					  - datablock_addr
					   - offset_in_addr
					   : access uninitialized fields

Fixes: 7a2af766af ("f2fs: enhance on-disk inode structure scalability")
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-27 14:51:13 +01:00
..
acl.c f2fs: fix wrong return value of f2fs_acl_create 2019-02-12 19:47:02 +01:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: use generic EFSBADCRC/EFSCORRUPTED 2019-10-01 08:26:13 +02:00
data.c f2fs: fix potential overflow 2020-01-17 19:47:13 +01:00
debug.c f2fs: don't access node/meta inode mapping after iput 2019-07-10 09:53:45 +02:00
dir.c f2fs: fix to avoid accessing uninitialized field of inode page in is_alive() 2020-01-27 14:51:13 +01:00
extent_cache.c f2fs: avoid sleeping under spin_lock 2018-11-13 11:08:37 -08:00
f2fs.h f2fs: fix wrong error injection path in inc_valid_block_count() 2020-01-27 14:51:11 +01:00
file.c f2fs: fix potential overflow 2020-01-17 19:47:13 +01:00
gc.c f2fs: fix to allow node segment for GC by ioctl path 2019-12-13 08:51:51 +01:00
gc.h f2fs: introduce sbi->gc_mode to determine the policy 2018-05-31 11:31:51 -07:00
hash.c f2fs: check entire encrypted bigname when finding a dentry 2017-05-04 11:44:35 -04:00
inline.c f2fs: fix to avoid accessing uninitialized field of inode page in is_alive() 2020-01-27 14:51:13 +01:00
inode.c f2fs: fix to update time in lazytime mode 2020-01-04 19:12:37 +01:00
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: fix to update dir's i_pino during cross_rename 2020-01-04 19:12:50 +01:00
node.c f2fs: avoid infinite loop in f2fs_alloc_nid 2019-11-20 18:47:10 +01:00
node.h f2fs: let checkpoint flush dnode page of regular 2018-08-01 11:52:36 -07:00
recovery.c f2fs: mark inode dirty explicitly in recover_inode() 2019-11-20 18:47:40 +01:00
segment.c f2fs: fix to account preflush command for noflush_merge mode 2019-12-13 08:51:48 +01:00
segment.h f2fs: use generic EFSBADCRC/EFSCORRUPTED 2019-10-01 08:26:13 +02:00
shrinker.c f2fs: fix sbi->extent_list corruption issue 2019-02-12 19:47:17 +01:00
super.c f2fs: spread f2fs_set_inode_flags() 2019-12-01 09:16:55 +01:00
sysfs.c f2fs: UBSAN: set boolean value iostat_enable correctly 2019-04-05 22:33:14 +02:00
trace.c f2fs: do not use mutex lock in atomic context 2019-04-05 22:32:59 +02:00
trace.h
xattr.c f2fs: use generic EFSBADCRC/EFSCORRUPTED 2019-10-01 08:26:13 +02:00
xattr.h f2fs: fix to avoid accessing xattr across the boundary 2019-06-19 08:18:02 +02:00