X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=kernel%2Fmodule.c;h=bbe04862e1b09113dd12dd49749f551cd9fbeecf;hb=e46e490368f87032a6e54969194413339b35a385;hp=d24deb0dbbc9488e91ba855342399c22c3f9d309;hpb=683aa4012f53b2ada0f430487e05d37b0d94e90a;p=linux-2.6 diff --git a/kernel/module.c b/kernel/module.c index d24deb0dbb..bbe04862e1 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -705,14 +705,14 @@ EXPORT_SYMBOL(__symbol_put); void symbol_put_addr(void *addr) { - unsigned long flags; + struct module *modaddr; - spin_lock_irqsave(&modlist_lock, flags); - if (!kernel_text_address((unsigned long)addr)) - BUG(); + if (core_kernel_text((unsigned long)addr)) + return; - module_put(module_text_address((unsigned long)addr)); - spin_unlock_irqrestore(&modlist_lock, flags); + if (!(modaddr = module_text_address((unsigned long)addr))) + BUG(); + module_put(modaddr); } EXPORT_SYMBOL_GPL(symbol_put_addr);