[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