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) {
> 


Reply via email to