diff options
author | Amit Kumar Salecha <amit.salecha@qlogic.com> | 2010-06-13 19:39:03 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-15 21:15:26 -0400 |
commit | bf445080dad9542c6bc6b693d941cae89605134c (patch) | |
tree | 973dc69dee286bc97aa7f927481b3359e265c7bb | |
parent | 44b496f685ca68c0d96eb3ad88e3948fad3417d6 (diff) |
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>
-rw-r--r-- | drivers/net/netxen/netxen_nic_ctx.c | 3 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 4 |
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/netxen/netxen_nic_ctx.c b/drivers/net/netxen/netxen_nic_ctx.c index f26e54716c88..3a41b6a84a68 100644 --- a/drivers/net/netxen/netxen_nic_ctx.c +++ b/drivers/net/netxen/netxen_nic_ctx.c | |||
@@ -629,7 +629,8 @@ int netxen_alloc_hw_resources(struct netxen_adapter *adapter) | |||
629 | if (addr == NULL) { | 629 | if (addr == NULL) { |
630 | dev_err(&pdev->dev, "%s: failed to allocate tx desc ring\n", | 630 | dev_err(&pdev->dev, "%s: failed to allocate tx desc ring\n", |
631 | netdev->name); | 631 | netdev->name); |
632 | return -ENOMEM; | 632 | err = -ENOMEM; |
633 | goto err_out_free; | ||
633 | } | 634 | } |
634 | 635 | ||
635 | tx_ring->desc_head = (struct cmd_desc_type0 *)addr; | 636 | tx_ring->desc_head = (struct cmd_desc_type0 *)addr; |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 045a7c8f5bdf..e08527f4b301 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -218,7 +218,7 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter) | |||
218 | if (cmd_buf_arr == NULL) { | 218 | if (cmd_buf_arr == NULL) { |
219 | dev_err(&pdev->dev, "%s: failed to allocate cmd buffer ring\n", | 219 | dev_err(&pdev->dev, "%s: failed to allocate cmd buffer ring\n", |
220 | netdev->name); | 220 | netdev->name); |
221 | return -ENOMEM; | 221 | goto err_out; |
222 | } | 222 | } |
223 | memset(cmd_buf_arr, 0, TX_BUFF_RINGSIZE(tx_ring)); | 223 | memset(cmd_buf_arr, 0, TX_BUFF_RINGSIZE(tx_ring)); |
224 | tx_ring->cmd_buf_arr = cmd_buf_arr; | 224 | tx_ring->cmd_buf_arr = cmd_buf_arr; |
@@ -230,7 +230,7 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter) | |||
230 | if (rds_ring == NULL) { | 230 | if (rds_ring == NULL) { |
231 | dev_err(&pdev->dev, "%s: failed to allocate rds ring struct\n", | 231 | dev_err(&pdev->dev, "%s: failed to allocate rds ring struct\n", |
232 | netdev->name); | 232 | netdev->name); |
233 | return -ENOMEM; | 233 | goto err_out; |
234 | } | 234 | } |
235 | recv_ctx->rds_rings = rds_ring; | 235 | recv_ctx->rds_rings = rds_ring; |
236 | 236 | ||