diff options
author | Jitendra Kalsaria <jitendra.kalsaria@qlogic.com> | 2012-07-10 10:57:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-11 02:28:33 -0400 |
commit | f5c4441cd80123c0f13fca75afc811c9c2b64add (patch) | |
tree | 746b0daf87c739e9881d95e42f4bfaed5e7955a5 | |
parent | a7db9ad1d48b502613f96054f21b107a8403237a (diff) |
qlge: Fixed double pci free upon tx_ring->q allocation failure.
Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/qlogic/qlge/qlge_main.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c index 5cfba6aa1b92..bccbc4e2b31a 100644 --- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c +++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c | |||
@@ -2708,10 +2708,9 @@ static int ql_alloc_tx_resources(struct ql_adapter *qdev, | |||
2708 | &tx_ring->wq_base_dma); | 2708 | &tx_ring->wq_base_dma); |
2709 | 2709 | ||
2710 | if ((tx_ring->wq_base == NULL) || | 2710 | if ((tx_ring->wq_base == NULL) || |
2711 | tx_ring->wq_base_dma & WQ_ADDR_ALIGN) { | 2711 | tx_ring->wq_base_dma & WQ_ADDR_ALIGN) |
2712 | netif_err(qdev, ifup, qdev->ndev, "tx_ring alloc failed.\n"); | 2712 | goto pci_alloc_err; |
2713 | return -ENOMEM; | 2713 | |
2714 | } | ||
2715 | tx_ring->q = | 2714 | tx_ring->q = |
2716 | kmalloc(tx_ring->wq_len * sizeof(struct tx_ring_desc), GFP_KERNEL); | 2715 | kmalloc(tx_ring->wq_len * sizeof(struct tx_ring_desc), GFP_KERNEL); |
2717 | if (tx_ring->q == NULL) | 2716 | if (tx_ring->q == NULL) |
@@ -2721,6 +2720,9 @@ static int ql_alloc_tx_resources(struct ql_adapter *qdev, | |||
2721 | err: | 2720 | err: |
2722 | pci_free_consistent(qdev->pdev, tx_ring->wq_size, | 2721 | pci_free_consistent(qdev->pdev, tx_ring->wq_size, |
2723 | tx_ring->wq_base, tx_ring->wq_base_dma); | 2722 | tx_ring->wq_base, tx_ring->wq_base_dma); |
2723 | tx_ring->wq_base = NULL; | ||
2724 | pci_alloc_err: | ||
2725 | netif_err(qdev, ifup, qdev->ndev, "tx_ring alloc failed.\n"); | ||
2724 | return -ENOMEM; | 2726 | return -ENOMEM; |
2725 | } | 2727 | } |
2726 | 2728 | ||