|
|
@@ -2566,7 +2566,7 @@ static int mem_cgroup_try_charge(struct mem_cgroup *memcg,
|
|
|
bool oom)
|
|
|
{
|
|
|
unsigned int batch = max(CHARGE_BATCH, nr_pages);
|
|
|
- int nr_oom_retries = MEM_CGROUP_RECLAIM_RETRIES;
|
|
|
+ int nr_retries = MEM_CGROUP_RECLAIM_RETRIES;
|
|
|
struct mem_cgroup *mem_over_limit;
|
|
|
struct res_counter *fail_res;
|
|
|
unsigned long nr_reclaimed;
|
|
|
@@ -2638,6 +2638,9 @@ retry:
|
|
|
if (mem_cgroup_wait_acct_move(mem_over_limit))
|
|
|
goto retry;
|
|
|
|
|
|
+ if (nr_retries--)
|
|
|
+ goto retry;
|
|
|
+
|
|
|
if (gfp_mask & __GFP_NOFAIL)
|
|
|
goto bypass;
|
|
|
|
|
|
@@ -2647,9 +2650,6 @@ retry:
|
|
|
if (!oom)
|
|
|
goto nomem;
|
|
|
|
|
|
- if (nr_oom_retries--)
|
|
|
- goto retry;
|
|
|
-
|
|
|
mem_cgroup_oom(mem_over_limit, gfp_mask, get_order(batch));
|
|
|
nomem:
|
|
|
if (!(gfp_mask & __GFP_NOFAIL))
|