1
0
Fork 0

net: ucc_geth: drop acquired references in probe error path and remove

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>
Signed-off-by: David S. Miller <davem@davemloft.net>
hifive-unleashed-5.1
Uwe Kleine-König 2014-08-07 23:48:24 +02:00 committed by David S. Miller
parent 129cc83a0b
commit fa310789a4
1 changed files with 8 additions and 1 deletions

View File

@ -3862,8 +3862,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);
@ -3897,6 +3900,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;
}
@ -3920,6 +3925,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;
}