diff options
Diffstat (limited to 'drivers/net/davinci_emac.c')
| -rw-r--r-- | drivers/net/davinci_emac.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index 29a4f06fbfc..dcc4a170b0f 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -1781,8 +1781,8 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)  	ndev = alloc_etherdev(sizeof(struct emac_priv));  	if (!ndev) {  		dev_err(&pdev->dev, "error allocating net_device\n"); -		clk_put(emac_clk); -		return -ENOMEM; +		rc = -ENOMEM; +		goto free_clk;  	}  	platform_set_drvdata(pdev, ndev); @@ -1796,7 +1796,8 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)  	pdata = pdev->dev.platform_data;  	if (!pdata) {  		dev_err(&pdev->dev, "no platform data\n"); -		return -ENODEV; +		rc = -ENODEV; +		goto probe_quit;  	}  	/* MAC addr and PHY mask , RMII enable info from platform_data */ @@ -1929,8 +1930,9 @@ no_dma:  	iounmap(priv->remap_addr);  probe_quit: -	clk_put(emac_clk);  	free_netdev(ndev); +free_clk: +	clk_put(emac_clk);  	return rc;  }  |