aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNamjae Jeon <namjae.jeon@samsung.com>2012-12-21 22:09:43 -0500
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2012-12-27 21:26:13 -0500
commit06025f4df88e9e41f4ebcf6b4c3df30661332bc9 (patch)
tree9d5fab4bb021444db75538a70095675af227dded
parent029cd28c1f739bbfc5105035696d5f1f4e45d161 (diff)
f2fs: handle error from f2fs_iget_nowait
In case f2fs_iget_nowait returns error, it results in truncate_hole being called with 'error' value as inode pointer. There is no check in truncate_hole for valid inode, so it could result in crash due "invalid access to memory". Avoid this by handling error condition properly. Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
-rw-r--r--fs/f2fs/recovery.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index b07e9b6ef376..207e2c865c7e 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -228,6 +228,9 @@ static void check_index_in_prev_nodes(struct f2fs_sb_info *sbi,
228 228
229 /* Deallocate previous index in the node page */ 229 /* Deallocate previous index in the node page */
230 inode = f2fs_iget_nowait(sbi->sb, ino); 230 inode = f2fs_iget_nowait(sbi->sb, ino);
231 if (IS_ERR(inode))
232 return;
233
231 truncate_hole(inode, bidx, bidx + 1); 234 truncate_hole(inode, bidx, bidx + 1);
232 iput(inode); 235 iput(inode);
233} 236}