All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86, kaslr: avoid setup_data when picking location
@ 2014-09-11 16:19 Kees Cook
  2014-09-19 11:49 ` [tip:x86/urgent] x86/kaslr: Avoid the setup_data area " tip-bot for Kees Cook
  2014-10-01 18:01 ` [PATCH] x86, kaslr: avoid setup_data " H. Peter Anvin
  0 siblings, 2 replies; 5+ messages in thread
From: Kees Cook @ 2014-09-11 16:19 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: linux-kernel, Baoquan He, Vivek Goyal, Thomas Gleixner,
	Ingo Molnar, x86, Rafael J. Wysocki, Wei Yongjun, Pavel Machek

The KASLR location-choosing logic needs to avoid the setup_data list
memory areas as well. Without this, it would be possible to have the
ASLR position stomp on the memory, ultimately causing the boot to fail.

Signed-off-by: Kees Cook <keescook@chromium.org>
Tested-by: Baoquan He <bhe@redhat.com>
Cc: stable@vger.kernel.org
---
 arch/x86/boot/compressed/aslr.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/arch/x86/boot/compressed/aslr.c b/arch/x86/boot/compressed/aslr.c
index fc6091abedb7..d39189ba7f8e 100644
--- a/arch/x86/boot/compressed/aslr.c
+++ b/arch/x86/boot/compressed/aslr.c
@@ -183,12 +183,27 @@ static void mem_avoid_init(unsigned long input, unsigned long input_size,
 static bool mem_avoid_overlap(struct mem_vector *img)
 {
 	int i;
+	struct setup_data *ptr;
 
 	for (i = 0; i < MEM_AVOID_MAX; i++) {
 		if (mem_overlaps(img, &mem_avoid[i]))
 			return true;
 	}
 
+	/* Avoid all entries in the setup_data linked list. */
+	ptr = (struct setup_data *)(unsigned long)real_mode->hdr.setup_data;
+	while (ptr) {
+		struct mem_vector avoid;
+
+		avoid.start = (u64)ptr;
+		avoid.size = sizeof(*ptr) + ptr->len;
+
+		if (mem_overlaps(img, &avoid))
+			return true;
+
+		ptr = (struct setup_data *)(unsigned long)ptr->next;
+	}
+
 	return false;
 }
 
-- 
1.9.1


-- 
Kees Cook
Chrome OS Security

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

end of thread, other threads:[~2014-10-01 18:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-11 16:19 [PATCH] x86, kaslr: avoid setup_data when picking location Kees Cook
2014-09-19 11:49 ` [tip:x86/urgent] x86/kaslr: Avoid the setup_data area " tip-bot for Kees Cook
2014-10-01 18:01 ` [PATCH] x86, kaslr: avoid setup_data " H. Peter Anvin
2014-10-01 18:08   ` Kees Cook
2014-10-01 18:13     ` H. Peter Anvin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.