aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/module.c')
-rw-r--r--kernel/module.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index 8ddca629e079..dd4389be9152 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2612,6 +2612,25 @@ unsigned long module_kallsyms_lookup_name(const char *name)
2612 preempt_enable(); 2612 preempt_enable();
2613 return ret; 2613 return ret;
2614} 2614}
2615
2616int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,
2617 struct module *, unsigned long),
2618 void *data)
2619{
2620 struct module *mod;
2621 unsigned int i;
2622 int ret;
2623
2624 list_for_each_entry(mod, &modules, list) {
2625 for (i = 0; i < mod->num_symtab; i++) {
2626 ret = fn(data, mod->strtab + mod->symtab[i].st_name,
2627 mod, mod->symtab[i].st_value);
2628 if (ret != 0)
2629 return ret;
2630 }
2631 }
2632 return 0;
2633}
2615#endif /* CONFIG_KALLSYMS */ 2634#endif /* CONFIG_KALLSYMS */
2616 2635
2617static char *module_flags(struct module *mod, char *buf) 2636static char *module_flags(struct module *mod, char *buf)