diff options
| -rw-r--r-- | drivers/net/ethernet/qlogic/qlge/qlge_main.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c index 87463bc701a6..50235d201592 100644 --- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c +++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c | |||
| @@ -1106,6 +1106,7 @@ static int ql_get_next_chunk(struct ql_adapter *qdev, struct rx_ring *rx_ring, | |||
| 1106 | if (pci_dma_mapping_error(qdev->pdev, map)) { | 1106 | if (pci_dma_mapping_error(qdev->pdev, map)) { |
| 1107 | __free_pages(rx_ring->pg_chunk.page, | 1107 | __free_pages(rx_ring->pg_chunk.page, |
| 1108 | qdev->lbq_buf_order); | 1108 | qdev->lbq_buf_order); |
| 1109 | rx_ring->pg_chunk.page = NULL; | ||
| 1109 | netif_err(qdev, drv, qdev->ndev, | 1110 | netif_err(qdev, drv, qdev->ndev, |
| 1110 | "PCI mapping failed.\n"); | 1111 | "PCI mapping failed.\n"); |
| 1111 | return -ENOMEM; | 1112 | return -ENOMEM; |
| @@ -2777,6 +2778,12 @@ static void ql_free_lbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring | |||
| 2777 | curr_idx = 0; | 2778 | curr_idx = 0; |
| 2778 | 2779 | ||
| 2779 | } | 2780 | } |
| 2781 | if (rx_ring->pg_chunk.page) { | ||
| 2782 | pci_unmap_page(qdev->pdev, rx_ring->pg_chunk.map, | ||
| 2783 | ql_lbq_block_size(qdev), PCI_DMA_FROMDEVICE); | ||
| 2784 | put_page(rx_ring->pg_chunk.page); | ||
| 2785 | rx_ring->pg_chunk.page = NULL; | ||
| 2786 | } | ||
| 2780 | } | 2787 | } |
| 2781 | 2788 | ||
| 2782 | static void ql_free_sbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring) | 2789 | static void ql_free_sbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring) |
