From: Michael Brown Date: Thu, 31 Aug 2006 13:25:45 +0000 (+0000) Subject: Check to see if we've reached the end of the map before attempting to X-Git-Tag: v0.9.3~1060 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=78dd963c1fc423673a890c8b761e40906252bfef;p=thirdparty%2Fipxe.git 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...) --- diff --git a/src/arch/i386/firmware/pcbios/e820mangler.S b/src/arch/i386/firmware/pcbios/e820mangler.S index 89030a49e..21d1bb9a5 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