On 05/25, Michal Hocko wrote: > > On Fri 22-05-15 20:30:42, Oleg Nesterov wrote: > > On 05/22, Michal Hocko wrote: > > > > > > On Fri 22-05-15 18:29:00, Oleg Nesterov wrote: > > > > > > > > In the likely case (if CLONE_VM without CLONE_THREAD was not used) the > > > > last for_each_process() in mm_update_next_owner() will find another thread > > > > from the same group. > > > > > > My understanding was that for_each_process will iterate only over > > > processes (represented by the thread group leaders). > > > > Yes. But note the inner for_each_thread() loop. And note that we > > we need this loop exactly because the leader can be zombie. > > I was too vague, sorry about that. Looks like, we confused each other somehow ;) Not sure I understand your concerns... But, > What I meant was that > for_each_process would pick up a group leader Yes. In the case above it will find the caller (current) too, > and the inner > for_each_thread will return it as the first element in the list. Yes, and this will be "current" task. But current->mm == NULL, so for_each_thread() will continue and find another thread which becomes the new mm->owner. Just in case, note the BUG_ON(c == p). I think that BUG_ON(p->mm) at the start will look much better. This is what mm_update_next_owner() actually assumes. Oleg. -- 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>