module: remove the SHF_ALLOC flag on the __versions section.
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 31 Mar 2009 19:05:33 +0000 (13:05 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 31 Mar 2009 02:35:34 +0000 (13:05 +1030)
Impact: reduce kernel memory usage

This patch just takes off the SHF_ALLOC flag on __versions so we don't
keep them around after module load.

This saves about 7% of module memory if CONFIG_MODVERSIONS=y.

Cc: Shawn Bohrer <shawn.bohrer@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
kernel/module.c

index 599fc85..784bf6d 100644 (file)
@@ -1961,6 +1961,9 @@ static noinline struct module *load_module(void __user *umod,
                if (strncmp(secstrings+sechdrs[i].sh_name, ".exit", 5) == 0)
                        sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC;
 #endif
+               /* Don't keep __versions around; it's just for loading. */
+               if (strcmp(secstrings + sechdrs[i].sh_name, "__versions") == 0)
+                       sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC;
        }
 
        modindex = find_sec(hdr, sechdrs, secstrings,