mirror of https://gitee.com/openkylin/linux.git
memcg: fix reclaim result checks
check_under_limit logic was wrong and this check should be against mem_over_limit rather than mem. Reported-by: Li Zefan <lizf@cn.fujitsu.com> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Balbir Singh <balbir@in.ibm.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Badari Pulavarty <pbadari@us.ibm.com> Cc: Jan Blunck <jblunck@suse.de> Cc: Hirokazu Takahashi <taka@valinux.co.jp> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
a636b327f7
commit
887007561a
|
@ -709,17 +709,17 @@ static int __mem_cgroup_try_charge(struct mm_struct *mm,
|
|||
* current usage of the cgroup before giving up
|
||||
*
|
||||
*/
|
||||
if (!do_swap_account &&
|
||||
res_counter_check_under_limit(&mem->res))
|
||||
continue;
|
||||
if (do_swap_account &&
|
||||
res_counter_check_under_limit(&mem->memsw))
|
||||
continue;
|
||||
if (do_swap_account) {
|
||||
if (res_counter_check_under_limit(&mem_over_limit->res) &&
|
||||
res_counter_check_under_limit(&mem_over_limit->memsw))
|
||||
continue;
|
||||
} else if (res_counter_check_under_limit(&mem_over_limit->res))
|
||||
continue;
|
||||
|
||||
if (!nr_retries--) {
|
||||
if (oom) {
|
||||
mem_cgroup_out_of_memory(mem, gfp_mask);
|
||||
mem->last_oom_jiffies = jiffies;
|
||||
mem_cgroup_out_of_memory(mem_over_limit, gfp_mask);
|
||||
mem_over_limit->last_oom_jiffies = jiffies;
|
||||
}
|
||||
goto nomem;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue