[PATCH] f2fs: fix to check warm_data_age_threshold

From: Yangtao Li
Date: Tue Jan 17 2023 - 04:54:29 EST


hot_data_age_threshold is a non-zero positive number, and
condition 2 includes condition 1, so there is no need to
additionally judge whether t is 0. And we need to judge
whether hot_data_age_threshold exceeds the number of available
blocks.

Fixes: 71644dff4811 ("f2fs: add block_age-based extent cache")
Signed-off-by: Yangtao Li <frank.li@xxxxxxxx>
---
fs/f2fs/sysfs.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index e396851a6dd1..b59595daf3ef 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -689,7 +689,10 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
}

if (!strcmp(a->attr.name, "warm_data_age_threshold")) {
- if (t == 0 || t <= sbi->hot_data_age_threshold)
+ block_t avail_user_block_count;
+
+ avail_user_block_count = sbi->user_block_count - sbi->current_reserved_blocks;
+ if (t <= sbi->hot_data_age_threshold || t >= avail_user_block_count)
return -EINVAL;
if (t == *ui)
return count;
--
2.25.1