On Wed, 25 Sep 2013, Tetsuo Handa wrote: > Any users of wait_for_completion() might be chosen by the OOM killer while > waiting for completion() call by some process which does memory > allocation. kthread_create() is one of such users. >
Any user process callers of wait_for_completion() you mean. > When such users are chosen by the OOM killer when they are waiting for > completion() in TASK_UNINTERRUPTIBLE, the system will be kept stressed > due to memory starvation because the OOM killer cannot kill such users. > Also results in a livelock if you're running in a memcg and have hit its limit. > Fix this problem for kthreadd by making kthread_create() killable. > There appear to be other potential callers of wait_for_completion() in the tree as well that could be holding lots of memory besides kthread_create(). Perhaps that's beyond the scope of this particular patch, though. wait_for_completion() is scary if that completion requires memory that cannot be allocated because the caller is killed but uninterruptible. > Signed-off-by: Tetsuo Handa <[email protected]> > Cc: Oleg Nesterov <[email protected]> > Signed-off-by: Andrew Morton <[email protected]> Acked-by: David Rientjes <[email protected]> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

