| Date | Mon, 29 May 2006 23:23:33 +0200 | From | Ingo Molnar <> | Subject | [patch 06/61] lock validator: add __module_address() method |
| |
From: Ingo Molnar <mingo@elte.hu>
add __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> --- include/linux/module.h | 6 ++++++ kernel/module.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+)
Index: linux/include/linux/module.h =================================================================== --- linux.orig/include/linux/module.h +++ linux/include/linux/module.h @@ -371,6 +371,7 @@ static inline int module_is_live(struct /* Is this address in a module? (second is with no locks, for oops) */ struct module *module_text_address(unsigned long addr); struct module *__module_text_address(unsigned long addr); +int __module_address(unsigned long addr); /* Returns module and fills in value, defined and namebuf, or NULL if symnum out of range. */ @@ -509,6 +510,11 @@ static inline struct module *__module_te return NULL; } +static inline int __module_address(unsigned long addr) +{ + return 0; +} + /* Get/put a kernel symbol (calls should be symmetric) */ #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) #define symbol_put(x) do { } while(0) Index: linux/kernel/module.c =================================================================== --- linux.orig/kernel/module.c +++ linux/kernel/module.c @@ -2222,6 +2222,20 @@ const struct exception_table_entry *sear return e; } +/* + * Is this a valid module address? We don't grab the lock. + */ +int __module_address(unsigned long addr) +{ + struct module *mod; + + list_for_each_entry(mod, &modules, list) + if (within(addr, mod->module_core, mod->core_size)) + return 1; + return 0; +} + + /* Is this a valid kernel address? We don't grab the lock: we are oopsing. */ struct module *__module_text_address(unsigned long addr) { - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|