From 78dd963c1fc423673a890c8b761e40906252bfef Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 31 Aug 2006 13:25:45 +0000 Subject: [PATCH] Check to see if we've reached the end of the map before attempting to skip past an empty region, otherwise we end up generating an infinitely long e820 map. (Yes, there *are* real systems that provide e820 maps with a zero-length region at the end...) --- src/arch/i386/firmware/pcbios/e820mangler.S | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/arch/i386/firmware/pcbios/e820mangler.S b/src/arch/i386/firmware/pcbios/e820mangler.S index 89030a49..21d1bb9a 100644 --- a/src/arch/i386/firmware/pcbios/e820mangler.S +++ b/src/arch/i386/firmware/pcbios/e820mangler.S @@ -361,7 +361,12 @@ int15_e820: pushl %edx call split_e820 pushfw + /* Skip empty region checking if we've reached the end of the + * map or hit an error, to avoid a potential endless loop. + */ jc 1f + testl %ebx, %ebx + jz 1f /* Check for an empty region */ pushl %eax movl %es:8(%di), %eax