]> git.hungrycats.org Git - linux/commitdiff
memory: stm32-fmc2-ebi: add missing of_node_put for loop iteration
authorKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Fri, 23 Apr 2021 10:18:14 +0000 (12:18 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:02:23 +0000 (16:02 +0200)
[ Upstream commit 2f9dc6a357ff3b82c1e54d29fb5d52b8d4a0c587 ]

Early exits from for_each_available_child_of_node() should decrement the
node reference counter.  Reported by Coccinelle:

  drivers/memory/stm32-fmc2-ebi.c:1046:1-33: WARNING:
    Function "for_each_available_child_of_node" should have of_node_put() before return around line 1051.

Fixes: 66b8173a197f ("memory: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Reviewed-by: Christophe Kerello <christophe.kerello@foss.st.com>
Link: https://lore.kernel.org/r/20210423101815.119341-1-krzysztof.kozlowski@canonical.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/memory/stm32-fmc2-ebi.c

index 4d5758c419c551efddc285e5200392a0c8326d09..ffec26a99313bd1ef3cc7ddd01d2332d300e1e62 100644 (file)
@@ -1048,16 +1048,19 @@ static int stm32_fmc2_ebi_parse_dt(struct stm32_fmc2_ebi *ebi)
                if (ret) {
                        dev_err(dev, "could not retrieve reg property: %d\n",
                                ret);
+                       of_node_put(child);
                        return ret;
                }
 
                if (bank >= FMC2_MAX_BANKS) {
                        dev_err(dev, "invalid reg value: %d\n", bank);
+                       of_node_put(child);
                        return -EINVAL;
                }
 
                if (ebi->bank_assigned & BIT(bank)) {
                        dev_err(dev, "bank already assigned: %d\n", bank);
+                       of_node_put(child);
                        return -EINVAL;
                }
 
@@ -1066,6 +1069,7 @@ static int stm32_fmc2_ebi_parse_dt(struct stm32_fmc2_ebi *ebi)
                        if (ret) {
                                dev_err(dev, "setup chip select %d failed: %d\n",
                                        bank, ret);
+                               of_node_put(child);
                                return ret;
                        }
                }