Re: [PATCH V4 7/8] PCI: OF: Move of_pci_dma_configure() to pci_dma_configure()

From: Bjorn Helgaas
Date: Tue Oct 27 2015 - 10:38:24 EST


Hi Suravee,

On Wed, Oct 21, 2015 at 08:52:10AM -0700, Suravee Suthikulpanit wrote:
> This patch move of_pci_dma_configure() to a more generic
> pci_dma_configure(), which can be extended by non-OF code (e.g. ACPI).

> -void of_pci_dma_configure(struct pci_dev *pci_dev)
> -{
> - struct device *dev = &pci_dev->dev;
> - struct device *bridge = pci_get_host_bridge_device(pci_dev);
> -
> - if (!bridge->parent)
> - return;
> -
> - of_dma_configure(dev, bridge->parent->of_node);
> - pci_put_host_bridge_device(bridge);
> -}

> +static void pci_dma_configure(struct pci_dev *dev)
> +{
> + struct device *bridge = pci_get_host_bridge_device(dev);
> +
> + if (IS_ENABLED(CONFIG_OF) && dev->dev.of_node) {
> + if (!bridge->parent)
> + return;

Don't we leak a bridge reference here? This looks like it was a problem in
the original code, not something you added. Ideally I guess I would add a
new patch that only fixes the leak in the original code, followed by this
patch that moves it from of_pci_dma_configure() to pci_dma_configure().

> +
> + of_dma_configure(&dev->dev, bridge->parent->of_node);
> + }
> +
> + pci_put_host_bridge_device(bridge);
> +}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/