On Sun, Jun 12, 2022 at 02:03:43PM -0700, Andy Lutomirski wrote: > >> > > > + /* LAM has to be enabled before spawning threads */ > >> > > > + if (get_nr_threads(current) > 1) > >> > > > + return -EBUSY; > >> > > Does this work for vfork()? I guess the idea is that locking is vfork() isn't the problem, the problem is that Linux allows CLONE_VM without CLONE_THREAD. Now, mostly nobody does that these days, but it is possible. > get_nr_threads() is the wrong thing. Either look at mm->mm_users or > find a way to get rid of this restriction entirely. mm->mm_users should indeed be sufficient here. > IMO it would not be insane to have a way to iterate over all tasks > using an mm. But doing this for io_uring, etc might be interesting. That has come up so often over the past 15+ years I've no idea how come we've still not managed to actually do that ;-)