On Mon, Aug 10, 2015 at 4:39 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: > [+cc Ben, Rob] > > On Tue, Aug 04, 2015 at 04:54:35PM -0500, Bjorn Helgaas wrote: >> of_parse_phandle() returns a device_node pointer with the refcount >> incremented. We should dispose of this reference when we're finished. >> >> Drop the reference acquired by of_parse_phandle(). > > I cc'd everybody who wrote or signed off on 0d5a6db3aa46 ("of: pci: add > registry of MSI chips"), which added of_pci_find_msi_chip_by_node(). > > The existing code (before this patch) looks wrong to me, but I'm not an OF > person. In general, how DT reference counting works is broken and difficult to get right. It doesn't really matter for most cases anyway (as nodes don't get removed). I cannot tell you whether this patch is right or wrong just looking at the patch. It seems correct based on your description. Rob > >> Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> >> --- >> drivers/pci/host/pci-mvebu.c | 1 + >> drivers/pci/host/pci-xgene.c | 1 + >> 2 files changed, 2 insertions(+) >> >> diff --git a/drivers/pci/host/pci-mvebu.c b/drivers/pci/host/pci-mvebu.c >> index 70aa095..67ec5e1 100644 >> --- a/drivers/pci/host/pci-mvebu.c >> +++ b/drivers/pci/host/pci-mvebu.c >> @@ -879,6 +879,7 @@ static void mvebu_pcie_msi_enable(struct mvebu_pcie *pcie) >> return; >> >> pcie->msi = of_pci_find_msi_chip_by_node(msi_node); >> + of_node_put(msi_node); >> >> if (pcie->msi) >> pcie->msi->dev = &pcie->pdev->dev; >> diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c >> index a9dfb70..4c2fb1f 100644 >> --- a/drivers/pci/host/pci-xgene.c >> +++ b/drivers/pci/host/pci-xgene.c >> @@ -514,6 +514,7 @@ static int xgene_pcie_msi_enable(struct pci_bus *bus) >> if (!bus->msi) >> return -ENODEV; >> >> + of_node_put(msi_node); >> bus->msi->dev = &bus->dev; >> return 0; >> } >> -- 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