summaryrefslogtreecommitdiff
path: root/kernel/module/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/module/main.c')
-rw-r--r--kernel/module/main.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/module/main.c b/kernel/module/main.c
index debeb0eb15d7..a2859dc3eea6 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -3744,6 +3744,19 @@ bool is_module_text_address(unsigned long addr)
return __module_text_address(addr) != NULL;
}
+void module_for_each_mod(int(*func)(struct module *mod, void *data), void *data)
+{
+ struct module *mod;
+
+ guard(rcu)();
+ list_for_each_entry_rcu(mod, &modules, list) {
+ if (mod->state == MODULE_STATE_UNFORMED)
+ continue;
+ if (func(mod, data))
+ break;
+ }
+}
+
/**
* __module_text_address() - get the module whose code contains an address.
* @addr: the address.