On Mon, 05 Jan 2026 14:33:40 +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]> Interesting bit of code. I guess there is some history here that didn't get captured as a comment? > > --- > > Depends on the first patch. > --- > arch/arm/mach-at91/pm.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c > index 35058b99069c..68bb4a86cd94 100644 > --- a/arch/arm/mach-at91/pm.c > +++ b/arch/arm/mach-at91/pm.c > @@ -982,15 +982,12 @@ static void __init at91_pm_sram_init(void) > struct gen_pool *sram_pool; > phys_addr_t sram_pbase; > unsigned long sram_base; > - struct device_node *node; > struct platform_device *pdev = NULL; > > - for_each_compatible_node(node, NULL, "mmio-sram") { > + for_each_compatible_node_scoped(node, NULL, "mmio-sram") { > pdev = of_find_device_by_node(node); > - if (pdev) { > - of_node_put(node); > + if (pdev) > break; > - } I'm curious if there are DT out there that ever causes the code to get to here? There might be multiple mmio-sram nodes but if there were seems unlikely the driver wants which ever one has a pdev at a given point in time. That feels like a weird race condition. So in practice I'd expect this to always either get the first one, or none. e.g. Why this can't just be node = of_find_node_by_name("mmio-sram); if (node) { pdev = of_find_device_by_node(node); } or something along those lines. Given risk of a regression maybe better to do what you have here. So with that in mind Reviewed-by: Jonathan Cameron <[email protected]> > } > > if (!pdev) { >
