• Jaegeuk Kim's avatar
    f2fs: fix race conditon on truncation with inline_data · 1ce86bf6
    Jaegeuk Kim authored
    
    
    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: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    1ce86bf6
file.c 23 KB