libkmod-module: don't treat "coming" as in-kernel
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 23 Feb 2012 18:37:13 +0000 (16:37 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 23 Feb 2012 18:47:33 +0000 (16:47 -0200)
Running two instances of modprobe with the same module should both
succeed or both fail:

modprobe foo&; modprobe foo;

Previously if foo failed to be inserted by the first call, the second one
could return 0 because it may have occurred while the first one was being
processed by kernel (thus marked as "coming").

Now we simply don't check by "coming" in order to decide if we need to
call init_module(). module-init-tools used to spin calling
usleep(100000), but calls to init_module() are already synchronous.
Therefore let kernel synchronize the calls.

libkmod/libkmod-module.c

index 69f1265..de25281 100644 (file)
@@ -110,7 +110,6 @@ static inline bool module_is_inkernel(struct kmod_module *mod)
        int state = kmod_module_get_initstate(mod);
 
        if (state == KMOD_MODULE_LIVE ||
-                       state == KMOD_MODULE_COMING ||
                        state == KMOD_MODULE_BUILTIN)
                return true;