| From 4db7ab68965fe039178c6069d7bb3be4d397675d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 19 Sep 2018 15:45:19 -0700 |
| Subject: f2fs: avoid infinite loop in f2fs_alloc_nid |
| |
| From: Jaegeuk Kim <jaegeuk@kernel.org> |
| |
| [ Upstream commit f84262b0862d43b71b3e80a036cdd9d82e620367 ] |
| |
| If we have an error in f2fs_build_free_nids, we're able to fall into a loop |
| to find free nids. |
| |
| Suggested-by: Chao Yu <chao@kernel.org> |
| Reviewed-by: Chao Yu <yuchao0@huawei.com> |
| Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/f2fs/node.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c |
| index aa8f19e1bdb3d..e5d474681471c 100644 |
| --- a/fs/f2fs/node.c |
| +++ b/fs/f2fs/node.c |
| @@ -2367,8 +2367,9 @@ retry: |
| spin_unlock(&nm_i->nid_list_lock); |
| |
| /* Let's scan nat pages and its caches to get free nids */ |
| - f2fs_build_free_nids(sbi, true, false); |
| - goto retry; |
| + if (!f2fs_build_free_nids(sbi, true, false)) |
| + goto retry; |
| + return false; |
| } |
| |
| /* |
| -- |
| 2.20.1 |
| |