Commit 11659a1d authored by Bjorn Helgaas's avatar Bjorn Helgaas

PCI: xgene: Free bridge resource list on failure

of_pci_get_host_bridge_resources() allocates a list of resources for host
bridge windows.  If we fail after allocating that list, free it before we
return error.
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent c3245a56
...@@ -542,12 +542,14 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev) ...@@ -542,12 +542,14 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
ret = xgene_pcie_setup(port, &res, iobase); ret = xgene_pcie_setup(port, &res, iobase);
if (ret) if (ret)
return ret; goto error;
bus = pci_create_root_bus(&pdev->dev, 0, bus = pci_create_root_bus(&pdev->dev, 0,
&xgene_pcie_ops, port, &res); &xgene_pcie_ops, port, &res);
if (!bus) if (!bus) {
return -ENOMEM; ret = -ENOMEM;
goto error;
}
pci_scan_child_bus(bus); pci_scan_child_bus(bus);
pci_assign_unassigned_bus_resources(bus); pci_assign_unassigned_bus_resources(bus);
...@@ -555,6 +557,10 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev) ...@@ -555,6 +557,10 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
platform_set_drvdata(pdev, port); platform_set_drvdata(pdev, port);
return 0; return 0;
error:
pci_free_resource_list(&res);
return ret;
} }
static const struct of_device_id xgene_pcie_match_table[] = { static const struct of_device_id xgene_pcie_match_table[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment