aboutsummaryrefslogtreecommitdiff
path: root/fs/f2fs
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2017-10-12 19:12:53 -0700
committerMister Oyster <oysterized@gmail.com>2017-12-06 16:41:38 +0100
commit7eef621bdfffe319ac5cf48103a0a00befbac42e (patch)
tree73bda1f9c5f47b51cd280e96ab5212699a239d22 /fs/f2fs
parent0fce3ba9026d42058fc8e34cc3f429c79425dcca (diff)
f2fs: avoid stale fi->gdirty_list pointer
When doing fault injection test, f2fs_evict_inode() didn't remove gdirty_list which incurs a kernel panic due to wrong pointer access. Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/inode.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index f3f8879c3..bdb0df863 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -520,8 +520,10 @@ no_delete:
stat_dec_inline_dir(inode);
stat_dec_inline_inode(inode);
- if (!is_set_ckpt_flags(sbi, CP_ERROR_FLAG))
+ if (likely(!is_set_ckpt_flags(sbi, CP_ERROR_FLAG)))
f2fs_bug_on(sbi, is_inode_flag_set(inode, FI_DIRTY_INODE));
+ else
+ f2fs_inode_synced(inode);
/* ino == 0, if f2fs_new_inode() was failed t*/
if (inode->i_ino)