summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-04-01 11:35:00 -0700
committerH. Peter Anvin <hpa@zytor.com>2009-04-01 11:35:00 -0700
commitcd670599b7b00d9263f6f11a05c0edeb9cbedaf3 (patch)
treee7aa26873f746baa1bd49cd92d3e7ab97c1716af
parentc549e71d073a6e9a4847497344db28a784061455 (diff)
downloadlinux-3.10-cd670599b7b00d9263f6f11a05c0edeb9cbedaf3.tar.gz
linux-3.10-cd670599b7b00d9263f6f11a05c0edeb9cbedaf3.tar.bz2
linux-3.10-cd670599b7b00d9263f6f11a05c0edeb9cbedaf3.zip
x86, setup: guard against pre-ACPI 3 e820 code not updating %ecx
Impact: BIOS bug safety For pre-ACPI 3 BIOSes, pre-initialize the end of the e820 buffer just in case the BIOS returns an unchanged %ecx but without actually touching the ACPI 3 extended flags field. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--arch/x86/boot/memory.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/boot/memory.c b/arch/x86/boot/memory.c
index d5d2360763d..5054c2ddd1a 100644
--- a/arch/x86/boot/memory.c
+++ b/arch/x86/boot/memory.c
@@ -31,6 +31,12 @@ static int detect_memory_e820(void)
struct e820entry *desc = boot_params.e820_map;
static struct e820_ext_entry buf; /* static so it is zeroed */
+ /*
+ * Set this here so that if the BIOS doesn't change this field
+ * but still doesn't change %ecx, we're still okay...
+ */
+ buf.ext_flags = 1;
+
do {
size = sizeof buf;