On 03/31, David Rientjes wrote: > > On Thu, 1 Apr 2010, Oleg Nesterov wrote: > > > > Why? You ignored this part: > > > > > > Say, right after exit_mm() we are doing acct_process(), and f_op->write() > > > needs a page. So, you are saying that in this case __page_cache_alloc() > > > can never trigger out_of_memory() ? > > > > > > why this is not possible? > > > > > > David, I am not arguing, I am asking. > > > > In case I wasn't clear... > > > > Yes, currently __oom_kill_task(p) is not possible if p->mm == NULL. > > > > But your patch adds > > > > if (fatal_signal_pending(current)) > > __oom_kill_task(current); > > > > into out_of_memory(). > > > > Ok, and it's possible during the tasklist scan if current is PF_EXITING > and that gets passed to oom_kill_process(), Yes, but this is harmless, afaics. The task is either current or it was found by select_bad_process() under tasklist. This means it is safe to use force_sig (but as I said, we should not use force_sig() anyway). > --- a/mm/oom_kill.c > +++ b/mm/oom_kill.c > @@ -459,7 +459,7 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order, > * its children or threads, just set TIF_MEMDIE so it can die quickly > */ > if (p->flags & PF_EXITING) { > - __oom_kill_task(p); > + set_tsk_thread_flag(p, TIF_MEMDIE); So, probably this makes sense anyway but not strictly necessary, up to you. > if (fatal_signal_pending(current)) { > - __oom_kill_task(current); > + set_tsk_thread_flag(current, TIF_MEMDIE); Yes, I think this fix is needed. Oleg. -- 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>