__wake_up(&memcg_oom_waitq, TASK_NORMAL, 0, memcg);
 }
 
-enum oom_status {
-       OOM_SUCCESS,
-       OOM_FAILED,
-       OOM_ASYNC,
-       OOM_SKIPPED
-};
-
-static enum oom_status mem_cgroup_oom(struct mem_cgroup *memcg, gfp_t mask, int order)
+/*
+ * Returns true if successfully killed one or more processes. Though in some
+ * corner cases it can return true even without killing any process.
+ */
+static bool mem_cgroup_oom(struct mem_cgroup *memcg, gfp_t mask, int order)
 {
-       enum oom_status ret;
-       bool locked;
+       bool locked, ret;
 
        if (order > PAGE_ALLOC_COSTLY_ORDER)
-               return OOM_SKIPPED;
+               return false;
 
        memcg_memory_event(memcg, MEMCG_OOM);
 
         * victim and then we have to bail out from the charge path.
         */
        if (memcg->oom_kill_disable) {
-               if (!current->in_user_fault)
-                       return OOM_SKIPPED;
-               css_get(&memcg->css);
-               current->memcg_in_oom = memcg;
-               current->memcg_oom_gfp_mask = mask;
-               current->memcg_oom_order = order;
-
-               return OOM_ASYNC;
+               if (current->in_user_fault) {
+                       css_get(&memcg->css);
+                       current->memcg_in_oom = memcg;
+                       current->memcg_oom_gfp_mask = mask;
+                       current->memcg_oom_order = order;
+               }
+               return false;
        }
 
        mem_cgroup_mark_under_oom(memcg);
                mem_cgroup_oom_notify(memcg);
 
        mem_cgroup_unmark_under_oom(memcg);
-       if (mem_cgroup_out_of_memory(memcg, mask, order))
-               ret = OOM_SUCCESS;
-       else
-               ret = OOM_FAILED;
+       ret = mem_cgroup_out_of_memory(memcg, mask, order);
 
        if (locked)
                mem_cgroup_oom_unlock(memcg);
        int nr_retries = MAX_RECLAIM_RETRIES;
        struct mem_cgroup *mem_over_limit;
        struct page_counter *counter;
-       enum oom_status oom_status;
        unsigned long nr_reclaimed;
        bool passed_oom = false;
        bool may_swap = true;
         * a forward progress or bypass the charge if the oom killer
         * couldn't make any progress.
         */
-       oom_status = mem_cgroup_oom(mem_over_limit, gfp_mask,
-                      get_order(nr_pages * PAGE_SIZE));
-       if (oom_status == OOM_SUCCESS) {
+       if (mem_cgroup_oom(mem_over_limit, gfp_mask,
+                          get_order(nr_pages * PAGE_SIZE))) {
                passed_oom = true;
                nr_retries = MAX_RECLAIM_RETRIES;
                goto retry;