On Wed, 9 Jun 2010, Oleg Nesterov wrote: > > I hope that my sentence didn't imply that it was, the point is that > > sending a SIGKILL to a PF_EXITING task isn't necessary to make it exit, > > it's already along the right path. > > Well, probably this is right... > > David, currently I do not know how the code looks with all patches > applied, could you please confirm there is no problem here? I am > looking at Linus's tree, > > mem_cgroup_out_of_memory: > > p = select_bad_process(); > oom_kill_process(p); > mem_cgroup_out_of_memory() does this under tasklist_lock: retry: p = select_bad_process(&points, mem, CONSTRAINT_MEMCG, NULL); if (!p || PTR_ERR(p) == -1UL) goto out; if (oom_kill_process(p, gfp_mask, 0, points, mem, "Memory cgroup out of memory")) goto retry; out: ... > Now, again, select_bad_process() can return the dead group-leader > of the memory-hog-thread-group. > select_bad_process() already has: if ((p->flags & PF_EXITING) && p->mm) { if (p != current) return ERR_PTR(-1UL); chosen = p; *ppoints = ULONG_MAX; } so we can disregard the check for p == current in this case since it would not be allocating memory without p->mm. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>