If get_pbus() is called for a device which has no parent/ancestor bus
[coreboot.git] / src / devices / pci_ops.c
index a8f09e229d0619004f75ce23bf1a045e7667e2f4..412b0c5b4baee6fb331c273d0fb4e82227e334c7 100644 (file)
@@ -28,6 +28,12 @@ static struct bus *get_pbus(device_t dev)
 {
        struct bus *pbus = dev->bus;
        while(pbus && pbus->dev && !ops_pci_bus(pbus)) {
+               if (pbus == pbus->dev->bus) {
+                       printk_alert("%s in endless loop looking for a parent "
+                               "bus with ops_pci_bus for %s, breaking out\n",
+                                __func__, dev_path(dev));
+                       break;
+               }
                pbus = pbus->dev->bus;
        }
        if (!pbus || !pbus->dev || !pbus->dev->ops || !pbus->dev->ops->ops_pci_bus) {