From 39ed3aeb8c4e17985ea1f3d4889ab6cfd8270062 Mon Sep 17 00:00:00 2001 From: CY Fan Date: Fri, 4 Mar 2022 12:54:14 +0800 Subject: [PATCH] zswapd: fix some size limitations ohos inclusion category: bugfix issue: #I4W8T3 CVE: NA ------------------------------------------- Signed-off-by: CY Fan --- mm/zswapd_control.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mm/zswapd_control.c b/mm/zswapd_control.c index d91a08b5ae2f..ab5ca24b3006 100644 --- a/mm/zswapd_control.c +++ b/mm/zswapd_control.c @@ -28,6 +28,8 @@ #define ZRAM_WM_RATIO 0 #define MAX_RATIO 100 +#define CHECK_BUFFER_VALID(var1, var2) (((var2) != 0) && ((var1) > (var2))) + struct zswapd_param { unsigned int min_score; unsigned int max_score; @@ -148,6 +150,11 @@ static ssize_t avail_buffers_params_write(struct kernfs_open_file *of, if (sscanf(buf, "%u %u %u %llu", &buffers, &min_buffers, &high_buffers, &threshold) != 4) return -EINVAL; + if (CHECK_BUFFER_VALID(min_buffers, buffers) || + CHECK_BUFFER_VALID(min_buffers, high_buffers) || + CHECK_BUFFER_VALID(buffers, high_buffers)) + return -EINVAL; + atomic_set(&avail_buffers, buffers); atomic_set(&min_avail_buffers, min_buffers); atomic_set(&high_avail_buffers, high_buffers); @@ -410,7 +417,8 @@ static ssize_t zswapd_single_memcg_param_write(struct kernfs_open_file *of, &refault_threshold) != 3) return -EINVAL; - if (ub_mem2zram_ratio > MAX_RATIO || ub_zram2ufs_ratio > MAX_RATIO) + if (ub_mem2zram_ratio > MAX_RATIO || ub_zram2ufs_ratio > MAX_RATIO || + refault_threshold > MAX_RATIO) return -EINVAL; atomic_set(&memcg->memcg_reclaimed.ub_mem2zram_ratio, -- Gitee