]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[S390] module: fix memory leak in s390 module loader
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 6 Oct 2009 08:33:58 +0000 (10:33 +0200)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Tue, 6 Oct 2009 08:35:06 +0000 (10:35 +0200)
The s390 version of module_frob_arch_sections allocates additional
syminfos for got and plt offsets. These syminfos are freed on
sucessful module load. If the module fails to load (e.g. missing
dependency when using insmod instead of modprobe) this area is not
freed.
This patch lets module_free free this area. Please note, we have to
set the pointer to NULL since module_free is called several times
from the generic code.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/module.c

index ab2e3ed28abc89256f7b305ee7ac63dfacfd34e4..639380a0c45c6278db26a03ea7b39eeec8fc48f2 100644 (file)
@@ -55,6 +55,8 @@ void *module_alloc(unsigned long size)
 /* Free memory returned from module_alloc */
 void module_free(struct module *mod, void *module_region)
 {
+       vfree(mod->arch.syminfo);
+       mod->arch.syminfo = NULL;
        vfree(module_region);
 }
 
@@ -402,6 +404,7 @@ int module_finalize(const Elf_Ehdr *hdr,
                    struct module *me)
 {
        vfree(me->arch.syminfo);
+       me->arch.syminfo = NULL;
        return module_bug_finalize(hdr, sechdrs, me);
 }