提交 248e7033 编写于 作者: L liubo

etmem: fix the div 0 problem in swapcache reclaim process

euleros inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7JI6K
CVE: NA

------------------------------------------------------------

In the swapcache recycling process, the number of pages
to be reclaimed on each node is obtained as follows:

nr_to_reclaim[nid_num] = (swapcache_to_reclaim /
			  (swapcache_total_reclaimable / nr[nid_num]));

However, nr[nid_num] is obtained by traversing the number
of swapcache pages on each node.
If there are multiple nodes in the environment and
no swap process occurs on a node, no swapcache page exists.
The value of nr[nid_num] may be 0.

Therefore, division by zero errors may occur.
Signed-off-by: Nliubo <liubo254@huawei.com>
上级 cb31b5b2
......@@ -4819,9 +4819,12 @@ 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);
&swapcache_list[nid_num],
nr_to_reclaim[nid_num], false);
nid_num++;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册