netxen: fix rxbuf leak across driver reload
authorDhananjay Phadke <dhananjay@netxen.com>
Fri, 8 Aug 2008 07:08:40 +0000 (00:08 -0700)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 14 Aug 2008 08:43:08 +0000 (04:43 -0400)
Free up rx ring during driver unload or open() failure.

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/net/netxen/netxen_nic_main.c

index 6fc42cd30729a2ae34eb47c8e681bef23ed41c72..056f6b17a3314ac4309af0bb2d3a6a37265f6482 100644 (file)
@@ -1017,6 +1017,7 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
 
        if (adapter->is_up == NETXEN_ADAPTER_UP_MAGIC) {
                netxen_free_hw_resources(adapter);
+               netxen_release_rx_buffers(adapter);
                netxen_free_sw_resources(adapter);
        }
 
@@ -1111,7 +1112,7 @@ static int netxen_nic_open(struct net_device *netdev)
                                  flags, netdev->name, adapter);
                if (err) {
                        printk(KERN_ERR "request_irq failed with: %d\n", err);
-                       goto err_out_free_hw;
+                       goto err_out_free_rxbuf;
                }
 
                adapter->is_up = NETXEN_ADAPTER_UP_MAGIC;
@@ -1144,7 +1145,8 @@ static int netxen_nic_open(struct net_device *netdev)
 
 err_out_free_irq:
        free_irq(adapter->irq, adapter);
-err_out_free_hw:
+err_out_free_rxbuf:
+       netxen_release_rx_buffers(adapter);
        netxen_free_hw_resources(adapter);
 err_out_free_sw:
        netxen_free_sw_resources(adapter);