• C
    f2fs: fix to do sanity check for inline inode · 677a82b4
    Chao Yu 提交于
    Yanming reported a kernel bug in Bugzilla kernel [1], which can be
    reproduced. The bug message is:
    
    The kernel message is shown below:
    
    kernel BUG at fs/inode.c:611!
    Call Trace:
     evict+0x282/0x4e0
     __dentry_kill+0x2b2/0x4d0
     dput+0x2dd/0x720
     do_renameat2+0x596/0x970
     __x64_sys_rename+0x78/0x90
     do_syscall_64+0x3b/0x90
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=215895
    
    The bug is due to fuzzed inode has both inline_data and encrypted flags.
    During f2fs_evict_inode(), as the inode was deleted by rename(), it
    will cause inline data conversion due to conflicting flags. The page
    cache will be polluted and the panic will be triggered in clear_inode().
    
    Try fixing the bug by doing more sanity checks for inline data inode in
    sanity_check_inode().
    
    Cc: stable@vger.kernel.org
    Reported-by: ObsessionLife's avatarMing Yan <yanming@tju.edu.cn>
    Signed-off-by: NChao Yu <chao.yu@oppo.com>
    Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
    677a82b4
inline.c 19.2 KB