diff --git a/mm/zswapd.c b/mm/zswapd.c index 65d0c102c808900702d0fc0d76c34a4bb373b798..89383ab58c6ad3c5f8ab6ed29cf05f4824b0c36e 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, @@ -110,10 +110,10 @@ static u64 swapout_memcg(struct mem_cgroup *memcg, u64 req_size) u32 ratio = atomic_read(&memcg->memcg_reclaimed.ub_zram2ufs_ratio); struct group_swap_device *gsdev = NULL; - if (all_size * ratio / ESWAP_PERCENT_CONSTANT <= swap_size) + if (div_u64(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,