Преглед на файлове

netxen: fix memory leaks in error path

Fixes memory leak in error path when memory allocation
for adapter data structures fails.

Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Amit Kumar Salecha преди 15 години
родител
ревизия
bf445080da
променени са 2 файла, в които са добавени 4 реда и са изтрити 3 реда
  1. 2 1
      drivers/net/netxen/netxen_nic_ctx.c
  2. 2 2
      drivers/net/netxen/netxen_nic_init.c

+ 2 - 1
drivers/net/netxen/netxen_nic_ctx.c

@@ -629,7 +629,8 @@ int netxen_alloc_hw_resources(struct netxen_adapter *adapter)
 	if (addr == NULL) {
 	if (addr == NULL) {
 		dev_err(&pdev->dev, "%s: failed to allocate tx desc ring\n",
 		dev_err(&pdev->dev, "%s: failed to allocate tx desc ring\n",
 				netdev->name);
 				netdev->name);
-		return -ENOMEM;
+		err = -ENOMEM;
+		goto err_out_free;
 	}
 	}
 
 
 	tx_ring->desc_head = (struct cmd_desc_type0 *)addr;
 	tx_ring->desc_head = (struct cmd_desc_type0 *)addr;

+ 2 - 2
drivers/net/netxen/netxen_nic_init.c

@@ -218,7 +218,7 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter)
 	if (cmd_buf_arr == NULL) {
 	if (cmd_buf_arr == NULL) {
 		dev_err(&pdev->dev, "%s: failed to allocate cmd buffer ring\n",
 		dev_err(&pdev->dev, "%s: failed to allocate cmd buffer ring\n",
 		       netdev->name);
 		       netdev->name);
-		return -ENOMEM;
+		goto err_out;
 	}
 	}
 	memset(cmd_buf_arr, 0, TX_BUFF_RINGSIZE(tx_ring));
 	memset(cmd_buf_arr, 0, TX_BUFF_RINGSIZE(tx_ring));
 	tx_ring->cmd_buf_arr = cmd_buf_arr;
 	tx_ring->cmd_buf_arr = cmd_buf_arr;
@@ -230,7 +230,7 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter)
 	if (rds_ring == NULL) {
 	if (rds_ring == NULL) {
 		dev_err(&pdev->dev, "%s: failed to allocate rds ring struct\n",
 		dev_err(&pdev->dev, "%s: failed to allocate rds ring struct\n",
 		       netdev->name);
 		       netdev->name);
-		return -ENOMEM;
+		goto err_out;
 	}
 	}
 	recv_ctx->rds_rings = rds_ring;
 	recv_ctx->rds_rings = rds_ring;