net/sonic: Fix some resource leaks in error handling paths
[linux-2.6-microblaze.git] / drivers / net / ethernet / natsemi / xtsonic.c
index afa166f..28d9e98 100644 (file)
@@ -229,11 +229,14 @@ int xtsonic_probe(struct platform_device *pdev)
        sonic_msg_init(dev);
 
        if ((err = register_netdev(dev)))
-               goto out1;
+               goto undo_probe1;
 
        return 0;
 
-out1:
+undo_probe1:
+       dma_free_coherent(lp->device,
+                         SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode),
+                         lp->descriptors, lp->descriptors_laddr);
        release_region(dev->base_addr, SONIC_MEM_SIZE);
 out:
        free_netdev(dev);