diff options
Diffstat (limited to 'drivers/net/ethernet/ibm/emac/mal.c')
| -rw-r--r-- | drivers/net/ethernet/ibm/emac/mal.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c index 2439f7e96e05..d92dd9c83031 100644 --- a/drivers/net/ethernet/ibm/emac/mal.c +++ b/drivers/net/ethernet/ibm/emac/mal.c @@ -605,9 +605,13 @@ static int mal_probe(struct platform_device *ofdev)  	INIT_LIST_HEAD(&mal->list);  	spin_lock_init(&mal->lock); -	init_dummy_netdev(&mal->dummy_dev); +	mal->dummy_dev = alloc_netdev_dummy(0); +	if (!mal->dummy_dev) { +		err = -ENOMEM; +		goto fail_unmap; +	} -	netif_napi_add_weight(&mal->dummy_dev, &mal->napi, mal_poll, +	netif_napi_add_weight(mal->dummy_dev, &mal->napi, mal_poll,  			      CONFIG_IBM_EMAC_POLL_WEIGHT);  	/* Load power-on reset defaults */ @@ -637,7 +641,7 @@ static int mal_probe(struct platform_device *ofdev)  					  GFP_KERNEL);  	if (mal->bd_virt == NULL) {  		err = -ENOMEM; -		goto fail_unmap; +		goto fail_dummy;  	}  	for (i = 0; i < mal->num_tx_chans; ++i) @@ -703,6 +707,8 @@ static int mal_probe(struct platform_device *ofdev)  	free_irq(mal->serr_irq, mal);   fail2:  	dma_free_coherent(&ofdev->dev, bd_size, mal->bd_virt, mal->bd_dma); + fail_dummy: +	free_netdev(mal->dummy_dev);   fail_unmap:  	dcr_unmap(mal->dcr_host, 0x100);   fail: @@ -734,6 +740,8 @@ static void mal_remove(struct platform_device *ofdev)  	mal_reset(mal); +	free_netdev(mal->dummy_dev); +  	dma_free_coherent(&ofdev->dev,  			  sizeof(struct mal_descriptor) *  			  (NUM_TX_BUFF * mal->num_tx_chans +  |