libkmod-module: probe: fix infinite loop with softdeps
If a softdep depends on a module in the dependency list of the module
being inserted, we would enter and infinite loop.
Move the "mod->visited = true" assignment to the proper place, hoping it
didn't break other use cases. This is a bug that comes and goes every
now and then. Since we have a testsuite now, a test for this should be
written.
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index b5eb7c9..835896f 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -1013,7 +1013,6 @@
goto fail;
}
*list = l;
- mod->visited = true;
mod->ignorecmd = (pre != NULL || post != NULL);
kmod_list_foreach(l, post) {
@@ -1043,6 +1042,7 @@
mod->name);
return 0;
}
+ mod->visited = true;
dep = kmod_module_get_dependencies(mod);
kmod_list_foreach(l, dep) {