On Thu 20-08-20 12:32:48, Christian Brauner wrote: > On Thu, Aug 20, 2020 at 11:09:01AM +0200, Michal Hocko wrote: > > On Thu 20-08-20 10:46:54, Christian Brauner wrote: [...] > > > > which includes processes with multiple threads (sharing mm and signals). > > > > However for such processes the loop is unnecessary because their signal > > > > structure is shared as well. > > and it seems you want to exclude threads, i.e. only update mm that is > shared not among threads in the same thread-group. > But struct signal and struct sighand_struct are different things, i.e. > they can be shared or not independent of each other. A non-shared > signal_struct where oom_score_adj{_min} live is only implied by > !CLONE_THREAD. So shouldn't this be: > > if (!(clone_flags & CLONE_THREAD)) rather than CLONE_SIGHAND? You are right as I have already replied to Oleg. -- Michal Hocko SUSE Labs