On Fri, Mar 9, 2018 at 7:38 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > On Fri, Mar 9, 2018 at 11:12 AM, Linus Torvalds > <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: >> >> How are you going to handle five processes doing the same setup concurrently? > > Side note: it's not just serialization. It's also "is it actually up > and running". > I think the right way to solve this would be to take a hint from systemd's socket activation model. The current patch had the module load process kick off an ELF binary that goes an registers itself to handle something. We can turn that around. Make the module init function create the socket (or pipe or whatever) receives request and pass it to the user program as stdin. Then the kernel can start queueing requests into the socket immediately, and the user program will get to them whenever it finishes initializing. Or it can write some message to the socket saying "hey, I'm ready". This also completely avoids the issue where some clever user manually loads the "module" with exec() ("hey, I'm so clever, I can just run the damn thing instead if using init_module()!" or writes an out-of-tree program that uses whatever supposedly secret API the in-kernel binary is supposed to use to register itself (and I know people who would do exactly that!) and the kernel does request_module() at roughly the same time. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html