diff options
| author | David S. Miller <davem@davemloft.net> | 2009-03-29 04:20:18 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2009-03-29 04:20:18 -0400 |
| commit | 129dd9677b30a07bb832247dfe8d6089f1ac61a0 (patch) | |
| tree | 6edba2e388d9020c23b11d77ea533040067cb143 | |
| parent | ee76db5e9e9896312f001790855a798472440328 (diff) | |
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>
| -rw-r--r-- | drivers/net/ucc_geth.c | 11 |
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 | |||
| 3648 | mdio = of_get_parent(phy); | 3648 | mdio = of_get_parent(phy); |
| 3649 | 3649 | ||
| 3650 | if (mdio == NULL) | 3650 | if (mdio == NULL) |
| 3651 | return -1; | 3651 | return -ENODEV; |
| 3652 | 3652 | ||
| 3653 | err = of_address_to_resource(mdio, 0, &res); | 3653 | err = of_address_to_resource(mdio, 0, &res); |
| 3654 | of_node_put(mdio); | ||
| 3655 | |||
| 3656 | if (err) | ||
| 3657 | return -1; | ||
| 3658 | 3654 | ||
| 3655 | if (err) { | ||
| 3656 | of_node_put(mdio); | ||
| 3657 | return err; | ||
| 3658 | } | ||
| 3659 | fsl_pq_mdio_bus_name(bus_name, mdio); | 3659 | fsl_pq_mdio_bus_name(bus_name, mdio); |
| 3660 | of_node_put(mdio); | ||
| 3660 | snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id), | 3661 | snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id), |
| 3661 | "%s:%02x", bus_name, *prop); | 3662 | "%s:%02x", bus_name, *prop); |
| 3662 | } | 3663 | } |
