From: Bartosz Golaszewski Date: Sat, 24 Aug 2024 08:02:35 +0000 (+0200) Subject: memory: ti-aemif: Revert "memory: ti-aemif: don't needlessly iterate over child nodes" X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=c7d2f3fbdf59b206414ddc306b0fb74cd174c0ed;p=users%2Fjedix%2Flinux-maple.git memory: ti-aemif: Revert "memory: ti-aemif: don't needlessly iterate over child nodes" This reverts commit 23a641d5c2bce4c723fff9118a5d865ee6b9d05a. The first-level children of the aemif node are not the device nodes (ones containing the 'compatible' property) but the chip-select nodes which instead have their own children. of_platform_populate() will skip such nodes so we must indeed iterate over the direct children of the aemif node. The problem here is that we never call of_platform_depopulate() as it takes the root device as argument. We only have an unpopulated chip-select nodes so we will leak these devices if any of the calls to of_platform_populate() fails. I don't have a batter idea right now but my patch was not correct so we need to revert it. While at it: at least use the scoped variant of the OF node iterator. Down the line, we should find a better solution to fix this potential resource leak in error path. Signed-off-by: Bartosz Golaszewski Link: https://lore.kernel.org/r/20240824080235.56472-1-brgl@bgdev.pl Fixes: 23a641d5c2bc ("memory: ti-aemif: don't needlessly iterate over child nodes") Signed-off-by: Krzysztof Kozlowski --- diff --git a/drivers/memory/ti-aemif.c b/drivers/memory/ti-aemif.c index 3b546eddf5fe9..d54dc3cfff73c 100644 --- a/drivers/memory/ti-aemif.c +++ b/drivers/memory/ti-aemif.c @@ -379,9 +379,11 @@ static int aemif_probe(struct platform_device *pdev) * child will be probed after the AEMIF timing parameters are set. */ if (np) { - ret = devm_of_platform_populate(dev); - if (ret) - return ret; + for_each_available_child_of_node_scoped(np, child_np) { + ret = of_platform_populate(child_np, NULL, NULL, dev); + if (ret < 0) + return ret; + } } return 0;