On Fri, 2 Jan 2026 13:49:01 +0100 Krzysztof Kozlowski <[email protected]> wrote:
> Use scoped for-each loop when iterating over device nodes to make code a > bit simpler. > > Signed-off-by: Krzysztof Kozlowski <[email protected]> Hi Krzysztof, Drive by review. Your changes are functionally equivalent and lgtm. However, I am curious at whether the lack of reference count for child when stashed in port->dn (and then used in the for loop) is a potential issue. Jonathan > --- > drivers/pci/controller/pci-mvebu.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/pci/controller/pci-mvebu.c > b/drivers/pci/controller/pci-mvebu.c > index a72aa57591c0..4d3c97b62fe0 100644 > --- a/drivers/pci/controller/pci-mvebu.c > +++ b/drivers/pci/controller/pci-mvebu.c > @@ -1452,7 +1452,6 @@ static int mvebu_pcie_probe(struct platform_device > *pdev) > struct mvebu_pcie *pcie; > struct pci_host_bridge *bridge; > struct device_node *np = dev->of_node; > - struct device_node *child; > int num, i, ret; > > bridge = devm_pci_alloc_host_bridge(dev, sizeof(struct mvebu_pcie)); > @@ -1474,16 +1473,14 @@ static int mvebu_pcie_probe(struct platform_device > *pdev) > return -ENOMEM; > > i = 0; > - for_each_available_child_of_node(np, child) { > + for_each_available_child_of_node_scoped(np, child) { > struct mvebu_pcie_port *port = &pcie->ports[i]; > > ret = mvebu_pcie_parse_port(pcie, port, child); > - if (ret < 0) { > - of_node_put(child); > + if (ret < 0) > return ret; > - } else if (ret == 0) { > + else if (ret == 0) > continue; > - } > > port->dn = child; > i++; > @@ -1493,6 +1490,7 @@ static int mvebu_pcie_probe(struct platform_device > *pdev) > for (i = 0; i < pcie->nports; i++) { > struct mvebu_pcie_port *port = &pcie->ports[i]; > int irq = port->intx_irq; > + struct device_node *child; > > child = port->dn; > if (!child)
