x86, setup: guard against pre-ACPI 3 e820 code not updating %ecx
authorH. Peter Anvin <hpa@zytor.com>
Wed, 1 Apr 2009 18:35:00 +0000 (11:35 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 1 Apr 2009 18:35:00 +0000 (11:35 -0700)
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>
arch/x86/boot/memory.c

index d5d2360763dc0e7e4512e9a63987d0aff89097d2..5054c2ddd1a03471b4423e7c9eb1719dca667901 100644 (file)
@@ -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;