On Tue 06-10-15 20:45:02, Oleg Nesterov wrote: [...] > And I was going to make V1 which avoids queue_work/kthread and zaps the > memory in oom_kill_process() context. > > But this can't work because we need to increment ->mm_users to avoid > the race with exit_mmap/etc. And this means that we need mmput() after > that, and as we recently discussed it can deadlock if mm_users goes > to zero, we can't do exit_mmap/etc in oom_kill_process(). Right. I hoped we could rely on mm_count just to pin mm but that is not sufficient because exit_mmap doesn't rely on mmap_sem so we do not have any synchronization there. Unfortunate. This means that we indeed have to do it asynchronously. Maybe we can come up with some trickery but let's do it later. I do agree that going with a kernel thread for now would be easier. Sorry about misleading you, I should have realized that mmput from the oom killing path is dangerous. -- 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>