Skip to content

Commit

Permalink
[SCSI] lpfc 8.1.7: Fix memory leak and cleanup code related to per ri…
Browse files Browse the repository at this point in the history
…ng 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>
  • Loading branch information
James Smart authored and James Bottomley committed Jul 9, 2006
1 parent e17da18 commit 9f49d3b
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 27 deletions.
5 changes: 5 additions & 0 deletions drivers/scsi/lpfc/lpfc_mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 *
Expand Down
25 changes: 0 additions & 25 deletions drivers/scsi/lpfc/lpfc_sli.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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);
Expand Down
2 changes: 0 additions & 2 deletions drivers/scsi/lpfc/lpfc_sli.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down

0 comments on commit 9f49d3b

Please sign in to comment.