summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-03-29 01:20:18 -0700
committerDavid S. Miller <davem@davemloft.net>2009-03-29 01:20:18 -0700
commit129dd9677b30a07bb832247dfe8d6089f1ac61a0 (patch)
tree6edba2e388d9020c23b11d77ea533040067cb143 /drivers
parentee76db5e9e9896312f001790855a798472440328 (diff)
downloadlinux-129dd9677b30a07bb832247dfe8d6089f1ac61a0.tar.gz
linux-129dd9677b30a07bb832247dfe8d6089f1ac61a0.tar.xz
ucc_geth: Fix use-after-of_node_put() in ucc_geth_probe().
We can't put 'mdio' until after we've used it in the fsl_pq_mdio_bus_name() call. Also fix error return values. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ucc_geth.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 86a479f61c0c..933fcfbf35e1 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -3648,15 +3648,16 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
mdio = of_get_parent(phy);
if (mdio == NULL)
- return -1;
+ return -ENODEV;
err = of_address_to_resource(mdio, 0, &res);
- of_node_put(mdio);
-
- if (err)
- return -1;
+ if (err) {
+ of_node_put(mdio);
+ return err;
+ }
fsl_pq_mdio_bus_name(bus_name, mdio);
+ of_node_put(mdio);
snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id),
"%s:%02x", bus_name, *prop);
}