|
@@ -398,12 +398,10 @@ static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
|
|
|
if (!child)
|
|
|
return NULL;
|
|
|
|
|
|
- child->self = bridge;
|
|
|
child->parent = parent;
|
|
|
child->ops = parent->ops;
|
|
|
child->sysdata = parent->sysdata;
|
|
|
child->bus_flags = parent->bus_flags;
|
|
|
- child->bridge = get_device(&bridge->dev);
|
|
|
|
|
|
/* initialize some portions of the bus device, but don't register it
|
|
|
* now as the parent is not properly set up yet. This device will get
|
|
@@ -420,6 +418,12 @@ static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
|
|
|
child->primary = parent->secondary;
|
|
|
child->subordinate = 0xff;
|
|
|
|
|
|
+ if (!bridge)
|
|
|
+ return child;
|
|
|
+
|
|
|
+ child->self = bridge;
|
|
|
+ child->bridge = get_device(&bridge->dev);
|
|
|
+
|
|
|
/* Set up default resource pointers and names.. */
|
|
|
for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
|
|
|
child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
|