PCI: don't publish new root bus until it's fully initialized
When pci_create_root_bus() adds the new struct pci_bus to the global pci_root_buses list, the bus becomes visible to other parts of the kernel, so it should be fully initialized. This patch delays adding the bus to the pci_root_buses list until after all the struct pci_bus initialization is finished. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
844393f4c5
commit
a5390aa6dc
|
@ -1569,10 +1569,6 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
|
||||||
goto err_out;
|
goto err_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
down_write(&pci_bus_sem);
|
|
||||||
list_add_tail(&b->node, &pci_root_buses);
|
|
||||||
up_write(&pci_bus_sem);
|
|
||||||
|
|
||||||
dev->parent = parent;
|
dev->parent = parent;
|
||||||
dev->release = pci_release_bus_bridge_dev;
|
dev->release = pci_release_bus_bridge_dev;
|
||||||
dev_set_name(dev, "pci%04x:%02x", pci_domain_nr(b), bus);
|
dev_set_name(dev, "pci%04x:%02x", pci_domain_nr(b), bus);
|
||||||
|
@ -1612,6 +1608,10 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
|
||||||
dev_info(&b->dev, "root bus resource %pR\n", res);
|
dev_info(&b->dev, "root bus resource %pR\n", res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
down_write(&pci_bus_sem);
|
||||||
|
list_add_tail(&b->node, &pci_root_buses);
|
||||||
|
up_write(&pci_bus_sem);
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
|
|
||||||
class_dev_reg_err:
|
class_dev_reg_err:
|
||||||
|
|
Loading…
Reference in New Issue