[PATCH 02/11] ARM: at91: Simplify with scoped for each OF child loop
Jonathan Cameron
jonathan.cameron at huawei.com
Tue Jan 6 21:04:29 AEDT 2026
On Mon, 05 Jan 2026 14:33:40 +0100
Krzysztof Kozlowski <krzysztof.kozlowski at oss.qualcomm.com> wrote:
> Use scoped for-each loop when iterating over device nodes to make code a
> bit simpler.
>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski at oss.qualcomm.com>
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 <jonathan.cameron at huawei.com>
> }
>
> if (!pdev) {
>
More information about the Linuxppc-dev
mailing list