]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod-module: probe: return -EEXIST if told to do so
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Mon, 6 Feb 2012 14:52:27 +0000 (12:52 -0200)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Mon, 6 Feb 2012 14:54:42 +0000 (12:54 -0200)
Commit "af9572c lib/module: check initstate before inserting module"
removed the check for "we should return -EEXIST" and moved it back to
the start of the function. The problem with this is the following
scenario:

- We check if module is in kernel -> no
- We insert the dependencies
<-- External program loads
the module
- We check if module is in kernel -> yes
- We return 0, when we should return -EEXIST

libkmod/libkmod-module.c

index 61cdb4a4e981a071f34598a7011f133dd16c5026..0af3e2ea9175eae71d543d4b47246badeba7444f 100644 (file)
@@ -1188,9 +1188,8 @@ KMOD_EXPORT int kmod_module_probe_insert_module(struct kmod_module *mod,
                                                && module_is_inkernel(m)) {
                                DBG(mod->ctx, "Ignoring module '%s': "
                                                "already loaded\n", m->name);
-                               err = 0;
-                               free(options);
-                               continue;
+                               err = -EEXIST;
+                               goto finish_module;
                        }
                        if (print_action != NULL)
                                print_action(m, false, options ?: "");
@@ -1200,6 +1199,7 @@ KMOD_EXPORT int kmod_module_probe_insert_module(struct kmod_module *mod,
                                                                options);
                }
 
+finish_module:
                free(options);
 
                /*