netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] net: ucc_geth: drop acquired references in probe error path and remove
@ 2014-08-07 21:48 Uwe Kleine-König
  2014-08-07 21:48 ` [PATCH 2/3] net: ucc_geth: make probe consistently acquire a reference to the phy node Uwe Kleine-König
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Uwe Kleine-König @ 2014-08-07 21:48 UTC (permalink / raw)
  To: Li Yang; +Cc: linuxppc-dev, netdev, kernel, Florian Fainelli

The ucc_geth_probe function assigns to ug_info->tbi_node and
ug_info->phy_node a value returned by of_parse_phandle which returns a
new reference. Put this reference again in the error path of
ucc_geth_probe and when removing the device.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
No Fixes: footer here. The problem already exists in v2.6.31-rc1 (e.g.
commit 0b9da337dca9 (net: Rework ucc_geth driver to use of_mdio
infrastructure)). Didn't continue to research a specific commit.
---
 drivers/net/ethernet/freescale/ucc_geth.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index 36fc429298e3..5f1aab9c4ee7 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -3864,8 +3864,11 @@ static int ucc_geth_probe(struct platform_device* ofdev)
 	/* Create an ethernet device instance */
 	dev = alloc_etherdev(sizeof(*ugeth));
 
-	if (dev == NULL)
+	if (dev == NULL) {
+		of_node_put(ug_info->tbi_node);
+		of_node_put(ug_info->phy_node);
 		return -ENOMEM;
+	}
 
 	ugeth = netdev_priv(dev);
 	spin_lock_init(&ugeth->lock);
@@ -3899,6 +3902,8 @@ static int ucc_geth_probe(struct platform_device* ofdev)
 			pr_err("%s: Cannot register net device, aborting\n",
 			       dev->name);
 		free_netdev(dev);
+		of_node_put(ug_info->tbi_node);
+		of_node_put(ug_info->phy_node);
 		return err;
 	}
 
@@ -3922,6 +3927,8 @@ static int ucc_geth_remove(struct platform_device* ofdev)
 	unregister_netdev(dev);
 	free_netdev(dev);
 	ucc_geth_memclean(ugeth);
+	of_node_put(ugeth->info->tbi_node);
+	of_node_put(ugeth->info->phy_node);
 
 	return 0;
 }
-- 
2.0.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-08-11  4:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-07 21:48 [PATCH 1/3] net: ucc_geth: drop acquired references in probe error path and remove Uwe Kleine-König
2014-08-07 21:48 ` [PATCH 2/3] net: ucc_geth: make probe consistently acquire a reference to the phy node Uwe Kleine-König
2014-08-07 23:07   ` David Miller
2014-08-07 21:48 ` [PATCH 3/3] net: ucc_geth: Don't use the MAC as PHY without a fixed link Uwe Kleine-König
2014-08-07 23:07   ` David Miller
2014-08-07 23:07 ` [PATCH 1/3] net: ucc_geth: drop acquired references in probe error path and remove David Miller
2014-08-08 20:34 ` Uwe Kleine-König
2014-08-08 20:52   ` David Miller
2014-08-10 18:32     ` [PATCH] net: ucc_geth: fix build failure Uwe Kleine-König
2014-08-11  4:40       ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).