forked from Minki/linux
[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: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
e17da18e2f
commit
9f49d3b05f
@ -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_mbuf_pool);
|
||||
|
||||
/* Free the iocb lookup array */
|
||||
kfree(psli->iocbq_lookup);
|
||||
psli->iocbq_lookup = NULL;
|
||||
|
||||
}
|
||||
|
||||
void *
|
||||
|
@ -191,35 +191,12 @@ static int
|
||||
lpfc_sli_ringtxcmpl_put(struct lpfc_hba * phba,
|
||||
struct lpfc_sli_ring * pring, struct lpfc_iocbq * piocb)
|
||||
{
|
||||
uint16_t iotag;
|
||||
|
||||
list_add_tail(&piocb->list, &pring->txcmplq);
|
||||
pring->txcmplq_cnt++;
|
||||
if (unlikely(pring->ringno == LPFC_ELS_RING))
|
||||
mod_timer(&phba->els_tmofunc,
|
||||
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);
|
||||
}
|
||||
|
||||
@ -2659,8 +2636,6 @@ lpfc_sli_hba_down(struct lpfc_hba * phba)
|
||||
|
||||
INIT_LIST_HEAD(&(pring->txq));
|
||||
|
||||
kfree(pring->fast_lookup);
|
||||
pring->fast_lookup = NULL;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(phba->host->host_lock, flags);
|
||||
|
@ -135,8 +135,6 @@ struct lpfc_sli_ring {
|
||||
uint32_t fast_iotag; /* max fastlookup based iotag */
|
||||
uint32_t iotag_ctr; /* keeps track of the next iotag 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;
|
||||
uint16_t txq_cnt; /* current length of queue */
|
||||
uint16_t txq_max; /* max length */
|
||||
|
Loading…
Reference in New Issue
Block a user