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-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html