On Thu, May 25, 2023 at 11:45 AM Lucas De Marchi wrote: > > Are you willig to merge (a possibly improved version of) your patch > or the userspace change is still something that would be desired? I think a user space change should still be something that people should look at, particularly as the kernel side patch I'm willing to accept doesn't catch the "completely serial" cases, only the "trying to load at the same time that the same module is literally busy being loaded". But I've cleaned up my patch a bit, and while the cleaned-up version is rather larger as a patch (mainly because of just also re-organizing the finit_module() code to do all the 'struct file' prep), I'm actually pretty happy with this attached patch conceptually. In this form, it actually "makes sense" to me, rather than being just clearly a workaround. Also, unlike the previous patch, this doesn't actually make any changes to the basic kernel_read_file() set of functions, it's all done by the module loading code itself. Luis, would you mind testing this version on your load? It still won't actually handle the purely serial case, so there *will* be those spurious double module reads from different CPU's just doing the things serially, but the exclusive file access region has been extended to not just cover the actual file content reading, but to cover the whole "turn it into a a real module" part too. Also, this does *not* update some of the comments in the module loading. I changed finit_module to use "kernel_read_file()" instead of "kernel_read_file_from_fd()", since it actually now has to look up the file descriptor anyway. But the comments still talk about that "from_fd" thing. Anyway, this is back to "ENTIRELY UNTESTED" territory, in that I've compiled this, but haven't booted it. The changes look obvious, but hey, mistakes happen. And the commit message is just a place-holder. Obviously. I won't sign off on this or write more of a commit message until it has had some real testing. Linus