On Tue 28-05-19 08:33:06, Minchan Kim wrote: > On Mon, May 27, 2019 at 05:12:02PM +0200, Oleg Nesterov wrote: > > On 05/27, Minchan Kim wrote: > > > > > > > another problem is that pid_task(pid) can return a zombie leader, in this case > > > > mm_access() will fail while it shouldn't. > > > > > > I'm sorry. I didn't notice that. However, I couldn't understand your point. > > > Why do you think mm_access shouldn't fail even though pid_task returns > > > a zombie leader? > > > > The leader can exit (call sys_exit(), not sys_exit_group()), this won't affect > > other threads. In this case the process is still alive even if the leader thread > > is zombie. That is why we have find_lock_task_mm(). > > Thanks for clarification, Oleg. Then, Let me have a further question. > > It means process_vm_readv, move_pages have same problem too because find_task_by_vpid > can return a zomebie leader and next line checks for mm_struct validation makes a > failure. My understand is correct? If so, we need to fix all places. Isn't that a problem of most callers of get_task_mm? Shouldn't we fix it turning it into find_lock_task_mm? -- Michal Hocko SUSE Labs