On Thu 18-02-16 19:30:12, Tetsuo Handa wrote: [...] > Commit 9cbb78bb314360a8 changed oom_scan_process_thread() to > always pass memcg == NULL by removing memcg argument from > oom_scan_process_thread(). As a result, after that commit, > we are doing test_tsk_thread_flag(p, TIF_MEMDIE) check and > oom_task_origin(p) check between two oom_unkillable_task() > calls of memcg OOM case. Why don't we skip these checks by > passing memcg != NULL to first oom_unkillable_task() call? > Was this change by error? I am not really sure I understand your question. The point is that mem_cgroup_out_of_memory does for_each_mem_cgroup_tree which means that only tasks from the given memcg hierarchy is checked and oom_unkillable_task cares about memcg only for /* When mem_cgroup_out_of_memory() and p is not member of the group */ if (memcg && !task_in_mem_cgroup(p, memcg)) return true; which is never true by definition. I guess we can safely remove the memcg argument from oom_badness and oom_unkillable_task. At least from a quick glance... -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>