aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/module.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2006-07-03 03:24:24 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-03 18:27:00 -0400
commit4d435f9d8ff01ae726a2a84edb9c2457787a337e (patch)
treec4c65b739187731e89893cd10faf270067c81a56 /kernel/module.c
parent93e028148fce0be9787de7fb097fa4c8582b78c1 (diff)
[PATCH] lockdep: add is_module_address()
Add is_module_address() method - to be used by lockdep. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/module.c')
-rw-r--r--kernel/module.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index 281172f01e9a..0351625767b1 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2159,6 +2159,29 @@ const struct exception_table_entry *search_module_extables(unsigned long addr)
2159 return e; 2159 return e;
2160} 2160}
2161 2161
2162/*
2163 * Is this a valid module address?
2164 */
2165int is_module_address(unsigned long addr)
2166{
2167 unsigned long flags;
2168 struct module *mod;
2169
2170 spin_lock_irqsave(&modlist_lock, flags);
2171
2172 list_for_each_entry(mod, &modules, list) {
2173 if (within(addr, mod->module_core, mod->core_size)) {
2174 spin_unlock_irqrestore(&modlist_lock, flags);
2175 return 1;
2176 }
2177 }
2178
2179 spin_unlock_irqrestore(&modlist_lock, flags);
2180
2181 return 0;
2182}
2183
2184
2162/* Is this a valid kernel address? We don't grab the lock: we are oopsing. */ 2185/* Is this a valid kernel address? We don't grab the lock: we are oopsing. */
2163struct module *__module_text_address(unsigned long addr) 2186struct module *__module_text_address(unsigned long addr)
2164{ 2187{