linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] x86, relocs: add more per-cpu gold special cases
@ 2013-10-11  1:39 Kees Cook
  2013-10-13 12:01 ` [tip:x86/kaslr] x86, relocs: Add " tip-bot for Michael Davidson
  0 siblings, 1 reply; 13+ messages in thread
From: Kees Cook @ 2013-10-11  1:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Kees Cook,
	Michael Davidson, Cong Ding

From: Michael Davidson <md@google.com>

The "gold" linker doesn't seem to put some additional per-cpu cases in
the right place. Add these to the per-cpu check. Without this, the kASLR
patch series fails to correctly apply relocations, and fails to boot.

Signed-off-by: Michael Davidson <md@google.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
---
v2:
 - clean up attribution for clarity; HPA.
---
 arch/x86/tools/relocs.c |   18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
index f7bab68..71a2533 100644
--- a/arch/x86/tools/relocs.c
+++ b/arch/x86/tools/relocs.c
@@ -722,15 +722,23 @@ static void percpu_init(void)
 
 /*
  * Check to see if a symbol lies in the .data..percpu section.
- * For some as yet not understood reason the "__init_begin"
- * symbol which immediately preceeds the .data..percpu section
- * also shows up as it it were part of it so we do an explict
- * check for that symbol name and ignore it.
+ *
+ * The linker incorrectly associates some symbols with the
+ * .data..percpu section so we also need to check the symbol
+ * name to make sure that we classify the symbol correctly.
+ *
+ * The GNU linker incorrectly associates:
+ *	__init_begin
+ *
+ * The "gold" linker incorrectly associates:
+ *	init_per_cpu__irq_stack_union
+ *	init_per_cpu__gdt_page
  */
 static int is_percpu_sym(ElfW(Sym) *sym, const char *symname)
 {
 	return (sym->st_shndx == per_cpu_shndx) &&
-		strcmp(symname, "__init_begin");
+		strcmp(symname, "__init_begin") &&
+		strncmp(symname, "init_per_cpu_", 13);
 }
 
 
-- 
1.7.9.5


-- 
Kees Cook
Chrome OS Security

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-10-16 14:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-11  1:39 [PATCH v2] x86, relocs: add more per-cpu gold special cases Kees Cook
2013-10-13 12:01 ` [tip:x86/kaslr] x86, relocs: Add " tip-bot for Michael Davidson
2013-10-14  8:30   ` Ingo Molnar
2013-10-14  9:38     ` Ingo Molnar
2013-10-14 14:19     ` H. Peter Anvin
2013-10-14 16:28       ` H. Peter Anvin
2013-10-14 20:47         ` Kees Cook
2013-10-15  6:04           ` Ingo Molnar
2013-10-15 15:42             ` Kees Cook
2013-10-15 16:03               ` Ingo Molnar
2013-10-15 17:22                 ` Kees Cook
2013-10-16  6:56                   ` Ingo Molnar
2013-10-16 14:53                     ` Kees Cook

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).