ramips: add error-path handling to the ramips_eth_plat_probe
SVN-Revision: 18165
This commit is contained in:
parent
c2cc2884e3
commit
7c7f004875
1 changed files with 26 additions and 6 deletions
|
@ -338,12 +338,24 @@ ramips_eth_plat_probe(struct platform_device *plat)
|
|||
{
|
||||
struct raeth_priv *priv;
|
||||
struct ramips_eth_platform_data *data = plat->dev.platform_data;
|
||||
int err;
|
||||
|
||||
if (!data) {
|
||||
dev_err(&plat->dev, "no platform data specified\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ramips_fe_base = ioremap_nocache(data->base_addr, PAGE_SIZE);
|
||||
if(!ramips_fe_base)
|
||||
return -ENOMEM;
|
||||
|
||||
ramips_dev = alloc_etherdev(sizeof(struct raeth_priv));
|
||||
if(!ramips_dev)
|
||||
return -ENOMEM;
|
||||
if(!ramips_dev) {
|
||||
dev_err(&plat->dev, "alloc_etherdev failed\n");
|
||||
err = -ENOMEM;
|
||||
goto err_unmap;
|
||||
}
|
||||
|
||||
strcpy(ramips_dev->name, "eth%d");
|
||||
ramips_dev->irq = data->irq;
|
||||
ramips_dev->addr_len = ETH_ALEN;
|
||||
|
@ -351,16 +363,24 @@ ramips_eth_plat_probe(struct platform_device *plat)
|
|||
ramips_dev->init = ramips_eth_probe;
|
||||
priv = (struct raeth_priv*)netdev_priv(ramips_dev);
|
||||
priv->plat = data;
|
||||
if(register_netdev(ramips_dev))
|
||||
{
|
||||
printk(KERN_ERR "ramips_eth: error bringing up device\n");
|
||||
return -ENXIO;
|
||||
|
||||
err = register_netdev(ramips_dev);
|
||||
if (err) {
|
||||
dev_err(&plat->dev, "error bringing up device\n");
|
||||
goto err_free_dev;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_RALINK_RT305X
|
||||
rt305x_esw_init();
|
||||
#endif
|
||||
printk(KERN_DEBUG "ramips_eth: loaded\n");
|
||||
return 0;
|
||||
|
||||
err_free_dev:
|
||||
kfree(ramips_dev);
|
||||
err_unmap:
|
||||
iounmap(ramips_fe_base);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Loading…
Reference in a new issue