Message ID | 20181025092229.28413-2-Zhiqiang.Hou@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | PCI/dwc: Add more than 4GiB range support | expand |
On 25/10/2018 10:22, Z.q. Hou wrote: > From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> > > Free the allocated pci_host_bridge struct when failed to get > host bridge resources, and free the resource windows before > free the bridge. > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> > --- > drivers/pci/controller/dwc/pcie-designware-host.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c > index 29a05759a294..ecacce016489 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-host.c > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c > @@ -353,7 +353,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > ret = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, > &bridge->windows, &pp->io_base); > if (ret) > - return ret; > + goto error; > > ret = devm_request_pci_bus_resources(dev, &bridge->windows); > if (ret) > @@ -502,6 +502,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > return 0; > > error: > + pci_free_resource_list(&bridge->windows); > pci_free_host_bridge(bridge); > return ret; > } > Thanks for the memory leak fix. :) Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 29a05759a294..ecacce016489 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -353,7 +353,7 @@ int dw_pcie_host_init(struct pcie_port *pp) ret = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, &bridge->windows, &pp->io_base); if (ret) - return ret; + goto error; ret = devm_request_pci_bus_resources(dev, &bridge->windows); if (ret) @@ -502,6 +502,7 @@ int dw_pcie_host_init(struct pcie_port *pp) return 0; error: + pci_free_resource_list(&bridge->windows); pci_free_host_bridge(bridge); return ret; }