提交 9f49d3b0 编写于 作者: J James Smart 提交者: James Bottomley

[SCSI] lpfc 8.1.7: Fix memory leak and cleanup code related to per ring lookup array

Fix memory leak and cleanup code related to per ring lookup array.
Signed-off-by: NJames Smart <James.Smart@emulex.com>
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 e17da18e
...@@ -133,6 +133,11 @@ lpfc_mem_free(struct lpfc_hba * phba) ...@@ -133,6 +133,11 @@ lpfc_mem_free(struct lpfc_hba * phba)
pci_pool_destroy(phba->lpfc_scsi_dma_buf_pool); pci_pool_destroy(phba->lpfc_scsi_dma_buf_pool);
pci_pool_destroy(phba->lpfc_mbuf_pool); pci_pool_destroy(phba->lpfc_mbuf_pool);
/* Free the iocb lookup array */
kfree(psli->iocbq_lookup);
psli->iocbq_lookup = NULL;
} }
void * void *
......
...@@ -191,35 +191,12 @@ static int ...@@ -191,35 +191,12 @@ static int
lpfc_sli_ringtxcmpl_put(struct lpfc_hba * phba, lpfc_sli_ringtxcmpl_put(struct lpfc_hba * phba,
struct lpfc_sli_ring * pring, struct lpfc_iocbq * piocb) struct lpfc_sli_ring * pring, struct lpfc_iocbq * piocb)
{ {
uint16_t iotag;
list_add_tail(&piocb->list, &pring->txcmplq); list_add_tail(&piocb->list, &pring->txcmplq);
pring->txcmplq_cnt++; pring->txcmplq_cnt++;
if (unlikely(pring->ringno == LPFC_ELS_RING)) if (unlikely(pring->ringno == LPFC_ELS_RING))
mod_timer(&phba->els_tmofunc, mod_timer(&phba->els_tmofunc,
jiffies + HZ * (phba->fc_ratov << 1)); jiffies + HZ * (phba->fc_ratov << 1));
if (pring->fast_lookup) {
/* Setup fast lookup based on iotag for completion */
iotag = piocb->iocb.ulpIoTag;
if (iotag && (iotag < pring->fast_iotag))
*(pring->fast_lookup + iotag) = piocb;
else {
/* Cmd ring <ringno> put: iotag <iotag> greater then
configured max <fast_iotag> wd0 <icmd> */
lpfc_printf_log(phba,
KERN_ERR,
LOG_SLI,
"%d:0316 Cmd ring %d put: iotag x%x "
"greater then configured max x%x "
"wd0 x%x\n",
phba->brd_no,
pring->ringno, iotag,
pring->fast_iotag,
*(((uint32_t *)(&piocb->iocb)) + 7));
}
}
return (0); return (0);
} }
...@@ -2659,8 +2636,6 @@ lpfc_sli_hba_down(struct lpfc_hba * phba) ...@@ -2659,8 +2636,6 @@ lpfc_sli_hba_down(struct lpfc_hba * phba)
INIT_LIST_HEAD(&(pring->txq)); INIT_LIST_HEAD(&(pring->txq));
kfree(pring->fast_lookup);
pring->fast_lookup = NULL;
} }
spin_unlock_irqrestore(phba->host->host_lock, flags); spin_unlock_irqrestore(phba->host->host_lock, flags);
......
...@@ -135,8 +135,6 @@ struct lpfc_sli_ring { ...@@ -135,8 +135,6 @@ struct lpfc_sli_ring {
uint32_t fast_iotag; /* max fastlookup based iotag */ uint32_t fast_iotag; /* max fastlookup based iotag */
uint32_t iotag_ctr; /* keeps track of the next iotag to use */ uint32_t iotag_ctr; /* keeps track of the next iotag to use */
uint32_t iotag_max; /* max iotag value to use */ uint32_t iotag_max; /* max iotag value to use */
struct lpfc_iocbq ** fast_lookup; /* array of IOCB ptrs indexed by
iotag */
struct list_head txq; struct list_head txq;
uint16_t txq_cnt; /* current length of queue */ uint16_t txq_cnt; /* current length of queue */
uint16_t txq_max; /* max length */ uint16_t txq_max; /* max length */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册