| From 2b6354a22b8902121ce3b24d6b3c6fd9af0c02ad Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 4 Mar 2021 09:21:18 +0000 |
| Subject: f2fs: fix a redundant call to f2fs_balance_fs if an error occurs |
| |
| From: Colin Ian King <colin.king@canonical.com> |
| |
| [ Upstream commit 28e18ee636ba28532dbe425540af06245a0bbecb ] |
| |
| The uninitialized variable dn.node_changed does not get set when a |
| call to f2fs_get_node_page fails. This uninitialized value gets used |
| in the call to f2fs_balance_fs() that may or not may not balances |
| dirty node and dentry pages depending on the uninitialized state of |
| the variable. Fix this by only calling f2fs_balance_fs if err is |
| not set. |
| |
| Thanks to Jaegeuk Kim for suggesting an appropriate fix. |
| |
| Addresses-Coverity: ("Uninitialized scalar variable") |
| Fixes: 2a3407607028 ("f2fs: call f2fs_balance_fs only when node was changed") |
| Signed-off-by: Colin Ian King <colin.king@canonical.com> |
| 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/inline.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c |
| index b9e37f0b3e09..1d7dafdaffe3 100644 |
| --- a/fs/f2fs/inline.c |
| +++ b/fs/f2fs/inline.c |
| @@ -218,7 +218,8 @@ out: |
| |
| f2fs_put_page(page, 1); |
| |
| - f2fs_balance_fs(sbi, dn.node_changed); |
| + if (!err) |
| + f2fs_balance_fs(sbi, dn.node_changed); |
| |
| return err; |
| } |
| -- |
| 2.30.2 |
| |