Re: [PATCH 1/2 v2] memcg: make oom_lock 0 and 1 based rather than coutner

Andrew Morton
2011-07-21T20:58:33Z

On Wed, 13 Jul 2011 13:05:49 +0200
Michal Hocko <mhocko@suse.cz> wrote:

> @@ -1893,6 +1942,8 @@ bool mem_cgroup_handle_oom(struct mem_cgroup *mem, gfp_t mask)

does:

: memcg_wakeup_oom(mem);
: mutex_unlock(&memcg_oom_mutex);
:
: mem_cgroup_unmark_under_oom(mem);
:
: if (test_thread_flag(TIF_MEMDIE) || fatal_signal_pending(current))
: return false;
: /* Give chance to dying process */
: schedule_timeout(1);
: return true;
: }

Calling schedule_timeout() in state TASK_RUNNING is equivalent to
calling schedule() and then pointlessly wasting some CPU cycles.

Someone might want to take a look at that, and wonder why this bug
wasn't detected in testing ;)