summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/linux/module.h7
-rw-r--r--kernel/debug/kdb/kdb_main.c12
-rw-r--r--kernel/module.c11
3 files changed, 11 insertions, 19 deletions
diff --git a/include/linux/module.h b/include/linux/module.h
index 680db9e2ac36..5d8fca5dcff5 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -181,6 +181,13 @@ void *__symbol_get(const char *symbol);
void *__symbol_get_gpl(const char *symbol);
#define symbol_get(x) ((typeof(&x))(__symbol_get(MODULE_SYMBOL_PREFIX #x)))
+/* modules using other modules: kdb wants to see this. */
+struct module_use {
+ struct list_head source_list;
+ struct list_head target_list;
+ struct module *source, *target;
+};
+
#ifndef __GENKSYMS__
#ifdef CONFIG_MODVERSIONS
/* Mark the CRC weak since genksyms apparently decides not to
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index b724c791b6d4..184cd8209c36 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -1857,12 +1857,6 @@ static int kdb_ef(int argc, const char **argv)
}
#if defined(CONFIG_MODULES)
-/* modules using other modules */
-struct module_use {
- struct list_head list;
- struct module *module_which_uses;
-};
-
/*
* kdb_lsmod - This function implements the 'lsmod' command. Lists
* currently loaded kernel modules.
@@ -1894,9 +1888,9 @@ static int kdb_lsmod(int argc, const char **argv)
{
struct module_use *use;
kdb_printf(" [ ");
- list_for_each_entry(use, &mod->modules_which_use_me,
- list)
- kdb_printf("%s ", use->module_which_uses->name);
+ list_for_each_entry(use, &mod->source_list,
+ source_list)
+ kdb_printf("%s ", use->target->name);
kdb_printf("]\n");
}
#endif
diff --git a/kernel/module.c b/kernel/module.c
index be18c3e34684..bbb1d812c79c 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -536,14 +536,6 @@ static void module_unload_init(struct module *mod)
mod->waiter = current;
}
-/* modules using other modules */
-struct module_use
-{
- struct list_head source_list;
- struct list_head target_list;
- struct module *source, *target;
-};
-
/* Does a already use b? */
static int already_uses(struct module *a, struct module *b)
{
@@ -589,8 +581,7 @@ static int add_module_usage(struct module *a, struct module *b)
/* Module a uses b */
int use_module(struct module *a, struct module *b)
{
- struct module_use *use;
- int no_warn, err;
+ int err;
if (b == NULL || already_uses(a, b)) return 1;