From e005facdb9bc99a3aacb55c23260464fb31e25d0 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Thu, 8 Dec 2011 10:42:34 -0200 Subject: [PATCH] Only search path in moddep if it's not already set rmmod/insmod should be able to operate directly on files, not relying on indexes and configuration. The following test was not working and now it is: $ # go to a dir != mod->dirname $ cd /lib/modules/$(uname -r)/kernel $ # try to insert module giving a relative path $ insmod drivers/acpi/ac.ko --- libkmod/libkmod-module.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index 3acd5b0c..d262d2fa 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -419,19 +419,22 @@ KMOD_EXPORT const char *kmod_module_get_name(const struct kmod_module *mod) */ KMOD_EXPORT const char *kmod_module_get_path(const struct kmod_module *mod) { - if (!mod->init.dep) { - /* lazy init */ - char *line = kmod_search_moddep(mod->ctx, mod->name); + char *line; - if (line == NULL) - return NULL; + DBG(mod->ctx, "name='%s' path='%s'", mod->name, mod->path); - kmod_module_parse_depline((struct kmod_module *) mod, line); - free(line); + if (mod->path != NULL) + return mod->path; + if (mod->init.dep) + return NULL; - if (!mod->init.dep) - return NULL; - } + /* lazy init */ + line = kmod_search_moddep(mod->ctx, mod->name); + if (line == NULL) + return NULL; + + kmod_module_parse_depline((struct kmod_module *) mod, line); + free(line); return mod->path; } -- 2.47.2