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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to