diff --git a/mm/vmscan.c b/mm/vmscan.c index a177de05a1a4c9c2912f44b16767ade56ac84dc4..7e2db77c6d9bf3335658114538d671918d72d43d 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4938,8 +4938,10 @@ int do_swapcache_reclaim(unsigned long *swapcache_watermark, for_each_node_state(nid, N_MEMORY) { cond_resched(); - nr_to_reclaim[nid_num] = (swapcache_to_reclaim / - (swapcache_total_reclaimable / nr[nid_num])); + nr_to_reclaim[nid_num] = (swapcache_total_reclaimable == 0) ? 0 : + ((swapcache_to_reclaim * nr[nid_num]) / + swapcache_total_reclaimable); + reclaim_page_count += reclaim_swapcache_pages_from_list(nid, &swapcache_list[nid_num], nr_to_reclaim[nid_num], false);