net: fs_enet: fix reference counting for phy_node
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 7 Aug 2014 21:06:00 +0000 (23:06 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 7 Aug 2014 23:02:59 +0000 (16:02 -0700)
Make sure that fs_enet_probe is left with a reference to the phy node.
In the presence of a phy handle this is already the case as
of_parse_phandle returns a reference. In the fixed phy case a call to
of_node_get is necessary. Otherwise the error path and remove function
drop a reference the driver isn't holding.

Fixes: bb74d9a4a87b ("fs_enet: use the new fixed PHY helpers")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c

index cfaf17b70f3fc5d6ab7a11a81266d67267646f33..748fd24d3d9ec3fa26ff80b528c9f9ff19fafbb4 100644 (file)
@@ -1033,7 +1033,7 @@ static int fs_enet_probe(struct platform_device *ofdev)
                /* In the case of a fixed PHY, the DT node associated
                 * to the PHY is the Ethernet MAC DT node.
                 */
-               fpi->phy_node = ofdev->dev.of_node;
+               fpi->phy_node = of_node_get(ofdev->dev.of_node);
        }
 
        if (of_device_is_compatible(ofdev->dev.of_node, "fsl,mpc5125-fec")) {