pinctrl: microchip-sgpio: Put fwnode in error case during ->probe()
authorAndy Shevchenko <andy.shevchenko@gmail.com>
Sun, 6 Jun 2021 19:19:40 +0000 (22:19 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 18 Jun 2021 09:17:47 +0000 (11:17 +0200)
device_for_each_child_node() bumps a reference counting of a returned variable.
We have to balance it whenever we return to the caller.

Fixes: 7e5ea974e61c ("pinctrl: pinctrl-microchip-sgpio: Add pinctrl driver for Microsemi Serial GPIO")
Cc: Lars Povlsen <lars.povlsen@microchip.com>
Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20210606191940.29312-1-andy.shevchenko@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-microchip-sgpio.c

index c12fa57..165cb7a 100644 (file)
@@ -845,8 +845,10 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
        i = 0;
        device_for_each_child_node(dev, fwnode) {
                ret = microchip_sgpio_register_bank(dev, priv, fwnode, i++);
-               if (ret)
+               if (ret) {
+                       fwnode_handle_put(fwnode);
                        return ret;
+               }
        }
 
        if (priv->in.gpio.ngpio != priv->out.gpio.ngpio) {