[PATCH] Be more strict on recognising init sections

From: Rusty Russell (rusty@rustcorp.com.au)
Date: Mon Jul 21 2003 - 06:22:10 EST


James Bottomly prodded me to re-xmit this for parisc...

Name: .init sections must start with .init
Status: Trivial

D: Someone pointed out that -ffunction-sections can cause a function
D: called "init<something>" to be put in the init section, and discarded.
D: Get more fussy with identifying them.

--- 1.86/kernel/module.c Wed Jun 11 00:55:09 2003
+++ edited/kernel/module.c Thu Jun 12 15:46:13 2003
@@ -1194,7 +1194,8 @@
                         if ((s->sh_flags & masks[m][0]) != masks[m][0]
                             || (s->sh_flags & masks[m][1])
                             || s->sh_entsize != ~0UL
- || strstr(secstrings + s->sh_name, ".init"))
+ || strncmp(secstrings + s->sh_name,
+ ".init", 5) == 0)
                                 continue;
                         s->sh_entsize = get_offset(&mod->core_size, s);
                         DEBUGP("\t%s\n", secstrings + s->sh_name);
@@ -1209,7 +1210,8 @@
                         if ((s->sh_flags & masks[m][0]) != masks[m][0]
                             || (s->sh_flags & masks[m][1])
                             || s->sh_entsize != ~0UL
- || !strstr(secstrings + s->sh_name, ".init"))
+ || strncmp(secstrings + s->sh_name,
+ ".init", 5) != 0)
                                 continue;
                         s->sh_entsize = (get_offset(&mod->init_size, s)
                                          | INIT_OFFSET_MASK);
@@ -1413,7 +1415,7 @@
                 }
 #ifndef CONFIG_MODULE_UNLOAD
                 /* Don't load .exit sections */
- if (strstr(secstrings+sechdrs[i].sh_name, ".exit"))
+ if (strncmp(secstrings+sechdrs[i].sh_name, ".exit", 5) == 0)
                         sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC;
 #endif
         }

--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jul 23 2003 - 22:00:42 EST