[SeaBIOS] [PATCH] Fix to prevent infinite loop in build_pci_path().

Kevin O'Connor kevin at koconnor.net
Sat Jan 22 16:59:44 CET 2011


Make sure the PCI path doesn't point to itself.
---
 src/pci.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/pci.c b/src/pci.c
index 45f210d..944a393 100644
--- a/src/pci.c
+++ b/src/pci.c
@@ -194,7 +194,7 @@ pci_path_setup(void)
     PCIpaths = malloc_tmp(sizeof(*PCIpaths) * 256);
     if (!PCIpaths)
         return;
-    memset(PCIpaths, 0, sizeof(PCIpaths));
+    memset(PCIpaths, 0, sizeof(*PCIpaths) * 256);
 
     int roots = 0;
     int bdf, max;
@@ -209,7 +209,8 @@ pci_path_setup(void)
         if (v == PCI_HEADER_TYPE_BRIDGE || v == PCI_HEADER_TYPE_CARDBUS) {
             v = pci_config_readl(bdf, PCI_PRIMARY_BUS);
             int childbus = (v >> 8) & 0xff;
-            PCIpaths[childbus] = bdf | PP_PCIBRIDGE;
+            if (childbus > bus)
+                PCIpaths[childbus] = bdf | PP_PCIBRIDGE;
         }
     }
 }
-- 
1.7.3.4




More information about the SeaBIOS mailing list