Thread (123 messages) 123 messages, 8 authors, 2021-06-30
STALE1825d

[PATCH 5.12 062/110] pinctrl: microchip-sgpio: Put fwnode in error case during ->probe()

From: Sasha Levin <sashal@kernel.org>
Date: 2021-06-28 14:23:46
Also in: lkml
Subsystem: arm/microchip sparx5 soc support, pin control subsystem, the rest · Maintainers: Steen Hegelund, Daniel Machon, Linus Walleij, Linus Torvalds

From: Andy Shevchenko <redacted>

[ Upstream commit 76b7f8fae30a9249f820e019f1e62eca992751a2 ]

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 <redacted>
Signed-off-by: Andy Shevchenko <redacted>
Link: https://lore.kernel.org/r/20210606191940.29312-1-andy.shevchenko@gmail.com (local)
Signed-off-by: Linus Walleij <redacted>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/pinctrl/pinctrl-microchip-sgpio.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/pinctrl/pinctrl-microchip-sgpio.c b/drivers/pinctrl/pinctrl-microchip-sgpio.c
index c12fa57ebd12..165cb7a59715 100644
--- a/drivers/pinctrl/pinctrl-microchip-sgpio.c
+++ b/drivers/pinctrl/pinctrl-microchip-sgpio.c
@@ -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) {
-- 
2.30.2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help