On 04/01, Oleg Nesterov wrote: > > On 03/31, David Rientjes wrote: > > > > On Wed, 31 Mar 2010, Oleg Nesterov wrote: > > > > > On 03/30, David Rientjes wrote: > > > > > > > > On Tue, 30 Mar 2010, Oleg Nesterov wrote: > > > > > > > > > Note that __oom_kill_task() does force_sig(SIGKILL) which assumes that > > > > > ->sighand != NULL. This is not true if out_of_memory() is called after > > > > > current has already passed exit_notify(). > > > > > > > > We have an even bigger problem if current is in the oom killer at > > > > exit_notify() since it has already detached its ->mm in exit_mm() :) > > > > > > Can't understand... I thought that in theory even kmalloc(1) can trigger > > > oom. > > > > __oom_kill_task() cannot be called on a task without an ->mm. > > 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(). 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>