Commit 90ec7819 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus

* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
  module: fix bne2 "gave up waiting for init of module libcrc32c"
  module: verify_export_symbols under the lock
  module: move find_module check to end
  module: make locking more fine-grained.
  module: Make module sysfs functions private.
  module: move sysfs exposure to end of load_module
  module: fix kdb's illicit use of struct module_use.
  module: Make the 'usage' lists be two-way
parents 8ce655e7 9bea7f23
...@@ -181,6 +181,13 @@ void *__symbol_get(const char *symbol); ...@@ -181,6 +181,13 @@ void *__symbol_get(const char *symbol);
void *__symbol_get_gpl(const char *symbol); void *__symbol_get_gpl(const char *symbol);
#define symbol_get(x) ((typeof(&x))(__symbol_get(MODULE_SYMBOL_PREFIX #x))) #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__ #ifndef __GENKSYMS__
#ifdef CONFIG_MODVERSIONS #ifdef CONFIG_MODVERSIONS
/* Mark the CRC weak since genksyms apparently decides not to /* Mark the CRC weak since genksyms apparently decides not to
...@@ -359,7 +366,9 @@ struct module ...@@ -359,7 +366,9 @@ struct module
#ifdef CONFIG_MODULE_UNLOAD #ifdef CONFIG_MODULE_UNLOAD
/* What modules depend on me? */ /* What modules depend on me? */
struct list_head modules_which_use_me; struct list_head source_list;
/* What modules do I depend on? */
struct list_head target_list;
/* Who is waiting for us to be unloaded */ /* Who is waiting for us to be unloaded */
struct task_struct *waiter; struct task_struct *waiter;
...@@ -663,43 +672,10 @@ static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter) ...@@ -663,43 +672,10 @@ static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter)
#endif /* CONFIG_MODULES */ #endif /* CONFIG_MODULES */
struct device_driver;
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
struct module;
extern struct kset *module_kset; extern struct kset *module_kset;
extern struct kobj_type module_ktype; extern struct kobj_type module_ktype;
extern int module_sysfs_initialized; extern int module_sysfs_initialized;
int mod_sysfs_init(struct module *mod);
int mod_sysfs_setup(struct module *mod,
struct kernel_param *kparam,
unsigned int num_params);
int module_add_modinfo_attrs(struct module *mod);
void module_remove_modinfo_attrs(struct module *mod);
#else /* !CONFIG_SYSFS */
static inline int mod_sysfs_init(struct module *mod)
{
return 0;
}
static inline int mod_sysfs_setup(struct module *mod,
struct kernel_param *kparam,
unsigned int num_params)
{
return 0;
}
static inline int module_add_modinfo_attrs(struct module *mod)
{
return 0;
}
static inline void module_remove_modinfo_attrs(struct module *mod)
{ }
#endif /* CONFIG_SYSFS */ #endif /* CONFIG_SYSFS */
#define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x) #define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x)
......
...@@ -1857,12 +1857,6 @@ static int kdb_ef(int argc, const char **argv) ...@@ -1857,12 +1857,6 @@ static int kdb_ef(int argc, const char **argv)
} }
#if defined(CONFIG_MODULES) #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 * kdb_lsmod - This function implements the 'lsmod' command. Lists
* currently loaded kernel modules. * currently loaded kernel modules.
...@@ -1894,9 +1888,9 @@ static int kdb_lsmod(int argc, const char **argv) ...@@ -1894,9 +1888,9 @@ static int kdb_lsmod(int argc, const char **argv)
{ {
struct module_use *use; struct module_use *use;
kdb_printf(" [ "); kdb_printf(" [ ");
list_for_each_entry(use, &mod->modules_which_use_me, list_for_each_entry(use, &mod->source_list,
list) source_list)
kdb_printf("%s ", use->module_which_uses->name); kdb_printf("%s ", use->target->name);
kdb_printf("]\n"); kdb_printf("]\n");
} }
#endif #endif
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment