Check to see if we've reached the end of the map before attempting to
authorMichael Brown <mcb30@etherboot.org>
Thu, 31 Aug 2006 13:25:45 +0000 (13:25 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 31 Aug 2006 13:25:45 +0000 (13:25 +0000)
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

index 89030a4..21d1bb9 100644 (file)
@@ -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