On Tue, Jan 27, 2015 at 06:01:45PM +0000, Lorenzo Pieralisi wrote: > In the function of_pci_get_host_bridge_resources() if the parsing of > ranges fails, previously allocated resources inclusive of bus_range > are not freed and are not expected to be freed by the function caller > on error return. > > This patch fixes the issues by adding code that properly frees resources > and bus_range before exiting the function with an error return value. > > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> > Acked-by: Liviu Dudau <liviu.dudau@xxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > Cc: Rob Herring <robh+dt@xxxxxxxxxx> Applied to pci/host-generic for v3.20, thanks! > --- > drivers/of/of_pci.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c > index 88471d3..60dc36c 100644 > --- a/drivers/of/of_pci.c > +++ b/drivers/of/of_pci.c > @@ -140,6 +140,7 @@ int of_pci_get_host_bridge_resources(struct device_node *dev, > unsigned char busno, unsigned char bus_max, > struct list_head *resources, resource_size_t *io_base) > { > + struct pci_host_bridge_window *window; > struct resource *res; > struct resource *bus_range; > struct of_pci_range range; > @@ -225,7 +226,10 @@ int of_pci_get_host_bridge_resources(struct device_node *dev, > conversion_failed: > kfree(res); > parse_failed: > + list_for_each_entry(window, resources, list) > + kfree(window->res); > pci_free_resource_list(resources); > + kfree(bus_range); > return err; > } > EXPORT_SYMBOL_GPL(of_pci_get_host_bridge_resources); > -- > 2.2.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html