Revert "module: remove the SHF_ALLOC flag on the __versions section."
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 7 Apr 2009 07:42:43 +0000 (17:12 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 7 Apr 2009 07:42:43 +0000 (17:12 +0930)
This reverts commit 9cb610d8e35fe3ec95a2fe2030b02f85aeea83c1.

This was an impressively stupid patch.  Firstly, we reset the SHF_ALLOC
flag lower down in the same function, so the patch was useless.  Even
better, find_sec() ignores sections with SHF_ALLOC not set, so
it breaks CONFIG_MODVERSIONS=y with CONFIG_MODULE_FORCE_LOAD=n, which
refuses to load the module since it can't find the __versions section.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
kernel/module.c

index c268a77..05f014e 100644 (file)
@@ -1952,9 +1952,6 @@ static noinline struct module *load_module(void __user *umod,
                if (strstarts(secstrings+sechdrs[i].sh_name, ".exit"))
                        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,