linux_dsm_epyc7002/fs/f2fs
Jaegeuk Kim 1ce86bf6f8 f2fs: fix race conditon on truncation with inline_data
Let's consider the following scenario.

blkaddr[0] inline_data i_size  i_blocks writepage           truncate
  NEW        X        4096        2    dirty page #0
  NEW        X         0                                    change i_size
  NEW        X         0          2    f2fs_write_inline_data
  NEW        X         0          2    get_dnode_of_data
  NEW        X         0          2    truncate_data_blocks_range
  NULL       O         0          1    memcpy(inline_data)
  NULL       O         0          1    f2fs_put_dnode
  NULL       O         0          1                         f2fs_truncate
  NULL       O         0          1                         get_dnode_of_data
  NULL       O         0          1                       *invalid block addr*

This patch adds checking inline_data flag during f2fs_truncate not to refer
corrupted block indices.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2014-11-03 16:07:29 -08:00
..
acl.c f2fs: remove the redundant validation check of acl 2014-07-09 14:04:25 -07:00
acl.h f2fs: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
checkpoint.c f2fs: check the use of macros on block counts and addresses 2014-09-30 15:34:47 -07:00
data.c f2fs: invalidate inmemory page 2014-11-03 16:07:29 -08:00
debug.c f2fs: check the use of macros on block counts and addresses 2014-09-30 15:34:47 -07:00
dir.c f2fs: expand counting dirty pages in the inode page cache 2014-09-16 04:10:39 -07:00
f2fs.h f2fs: invalidate inmemory page 2014-11-03 16:07:29 -08:00
file.c f2fs: fix race conditon on truncation with inline_data 2014-11-03 16:07:29 -08:00
gc.c f2fs: check the use of macros on block counts and addresses 2014-09-30 15:34:47 -07:00
gc.h f2fs: fix typo 2014-08-19 10:01:33 -07:00
hash.c f2fs: fix wrong casting for dentry name 2014-08-29 00:26:50 -07:00
inline.c f2fs: should truncate any allocated block for inline_data write 2014-11-03 16:07:29 -08:00
inode.c f2fs: support volatile operations for transient data 2014-10-07 11:54:41 -07:00
Kconfig f2fs: fix typo 2014-08-19 10:01:33 -07:00
Makefile f2fs: key functions to handle inline data 2013-12-26 20:40:09 +09:00
namei.c f2fs: call f2fs_unlock_op after error was handled 2014-09-30 15:34:55 -07:00
node.c f2fs: refactor flush_nat_entries to remove costly reorganizing ops 2014-09-30 15:30:41 -07:00
node.h f2fs: remove unused return value 2014-10-05 21:05:15 -07:00
recovery.c f2fs: check the use of macros on block counts and addresses 2014-09-30 15:34:47 -07:00
segment.c f2fs: invalidate inmemory page 2014-11-03 16:07:29 -08:00
segment.h f2fs: support atomic writes 2014-10-06 17:39:50 -07:00
super.c f2fs: do not make dirty any inmemory pages 2014-11-03 16:07:29 -08:00
xattr.c f2fs: need fsck.f2fs when f2fs_bug_on is triggered 2014-09-09 13:15:02 -07:00
xattr.h f2fs: pass flags field to setxattr functions 2014-05-07 10:21:56 +09:00