From 03e89e36d15f132c81b2dd0344152831ff13ed83 Mon Sep 17 00:00:00 2001 From: Ke Liu Date: Tue, 28 Mar 2023 10:30:43 +0800 Subject: [PATCH 1/2] hyperhold: fix memory leak in soft_crypt_page ohos inclusion category: feature issue: #I6QVSD CVE: NA -------------------------------- Only skcipher_request_alloc but no skcipher_request_free. Fix it by use skcipher_request_free. Signed-off-by: Ke Liu --- drivers/hyperhold/hp_device.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/hyperhold/hp_device.c b/drivers/hyperhold/hp_device.c index 5b818265c26d..47c5dd390477 100644 --- a/drivers/hyperhold/hp_device.c +++ b/drivers/hyperhold/hp_device.c @@ -120,6 +120,8 @@ int soft_crypt_page(struct crypto_skcipher *ctfm, struct page *dst_page, else BUG(); + skcipher_request_free(req); + if (ret) pr_err("%scrypt failed!\n", op == HP_DEV_ENCRYPT ? "en" : "de"); -- Gitee From 867f76827b7c87e8f3351305e475ccee05351178 Mon Sep 17 00:00:00 2001 From: Ke Liu Date: Tue, 28 Mar 2023 17:33:18 +0800 Subject: [PATCH 2/2] fix error for 32bit div Signed-off-by: Ke Liu --- mm/zswapd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/zswapd.c b/mm/zswapd.c index 65d0c102c808..006084945961 100644 --- a/mm/zswapd.c +++ b/mm/zswapd.c @@ -87,8 +87,8 @@ u64 swapin_memcg(struct mem_cgroup *memcg, u64 req_size) u64 ratio = atomic64_read(&memcg->memcg_reclaimed.ub_ufs2zram_ratio); struct group_swap_device *gsdev = NULL; - if (req_size > swap_size * ratio / ESWAP_PERCENT_CONSTANT) - req_size = swap_size * ratio / ESWAP_PERCENT_CONSTANT; + if (req_size > div_u64(swap_size * ratio, ESWAP_PERCENT_CONSTANT)) + req_size = div_u64(swap_size * ratio, ESWAP_PERCENT_CONSTANT); down_read(&gs_lock); list_for_each_entry(gsdev, &gs_list, list) { read_size += gsdev->ops->group_read(memcg->id.id, req_size - read_size, @@ -112,8 +112,8 @@ static u64 swapout_memcg(struct mem_cgroup *memcg, u64 req_size) if (all_size * ratio / ESWAP_PERCENT_CONSTANT <= swap_size) return 0; - if (req_size > all_size * ratio / ESWAP_PERCENT_CONSTANT - swap_size) - req_size = all_size * ratio / ESWAP_PERCENT_CONSTANT - swap_size; + if (req_size > div_u64(all_size * ratio, ESWAP_PERCENT_CONSTANT) - swap_size) + req_size = div_u64(all_size * ratio, ESWAP_PERCENT_CONSTANT) - swap_size; down_read(&gs_lock); list_for_each_entry(gsdev, &gs_list, list) { write_size += gsdev->ops->group_write(memcg->id.id, req_size - write_size, -- Gitee