diff options
| author | Rusty Russell <rusty@rustcorp.com.au> | 2002-11-12 02:32:50 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-11-12 02:32:50 -0800 |
| commit | 6a56b85f79d084b1d13fdd772271887d22387feb (patch) | |
| tree | 3c2a933b52b3e34b240f380ef223caae6723599e /kernel/module.c | |
| parent | 8c22b71fe52f702a6bdc731c461878b74a857259 (diff) | |
[PATCH] Fix module loader compile bug
The code was broken if module unload support was turned off.
symbol_put_addr() in module.c should be moved under __symbol_put.
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/kernel/module.c b/kernel/module.c index 18587df89ead..668406fa22cd 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -461,6 +461,28 @@ void __symbol_put(const char *symbol) } EXPORT_SYMBOL(__symbol_put); +void symbol_put_addr(void *addr) +{ + struct kernel_symbol_group *ks; + unsigned long flags; + + spin_lock_irqsave(&modlist_lock, flags); + list_for_each_entry(ks, &symbols, list) { + unsigned int i; + + for (i = 0; i < ks->num_syms; i++) { + if (ks->syms[i].value == (unsigned long)addr) { + module_put(ks->owner); + spin_unlock_irqrestore(&modlist_lock, flags); + return; + } + } + } + spin_unlock_irqrestore(&modlist_lock, flags); + BUG(); +} +EXPORT_SYMBOL_GPL(symbol_put_addr); + #else /* !CONFIG_MODULE_UNLOAD */ static void print_unload_info(struct seq_file *m, struct module *mod) { @@ -552,28 +574,6 @@ void *__symbol_get(const char *symbol) } EXPORT_SYMBOL_GPL(__symbol_get); -void symbol_put_addr(void *addr) -{ - struct kernel_symbol_group *ks; - unsigned long flags; - - spin_lock_irqsave(&modlist_lock, flags); - list_for_each_entry(ks, &symbols, list) { - unsigned int i; - - for (i = 0; i < ks->num_syms; i++) { - if (ks->syms[i].value == (unsigned long)addr) { - module_put(ks->owner); - spin_unlock_irqrestore(&modlist_lock, flags); - return; - } - } - } - spin_unlock_irqrestore(&modlist_lock, flags); - BUG(); -} -EXPORT_SYMBOL_GPL(symbol_put_addr); - /* Transfer one ELF section to the correct (init or core) area. */ static void *copy_section(const char *name, void *base, |
