[SCSI] lpfc 8.3.31: Fix Read Link status data
authorJames Smart <james.smart@emulex.com>
Thu, 10 May 2012 01:17:16 +0000 (21:17 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Thu, 17 May 2012 09:59:11 +0000 (10:59 +0100)
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/lpfc/lpfc_els.c

index c89c5c239e7efba66a91a116db2faad858053d4b..2ecd719cc2aa25008b9fe10ccc1046bb1c199733 100644 (file)
@@ -5198,7 +5198,6 @@ lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        }
 
        cmdsize = sizeof(struct RLS_RSP) + sizeof(uint32_t);
-       mempool_free(pmb, phba->mbox_mem_pool);
        elsiocb = lpfc_prep_els_iocb(phba->pport, 0, cmdsize,
                                     lpfc_max_els_tries, ndlp,
                                     ndlp->nlp_DID, ELS_CMD_ACC);
@@ -5206,8 +5205,10 @@ lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        /* Decrement the ndlp reference count from previous mbox command */
        lpfc_nlp_put(ndlp);
 
-       if (!elsiocb)
+       if (!elsiocb) {
+               mempool_free(pmb, phba->mbox_mem_pool);
                return;
+       }
 
        icmd = &elsiocb->iocb;
        icmd->ulpContext = rxid;
@@ -5224,7 +5225,7 @@ lpfc_els_rsp_rls_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        rls_rsp->primSeqErrCnt = cpu_to_be32(mb->un.varRdLnk.primSeqErrCnt);
        rls_rsp->invalidXmitWord = cpu_to_be32(mb->un.varRdLnk.invalidXmitWord);
        rls_rsp->crcCnt = cpu_to_be32(mb->un.varRdLnk.crcCnt);
-
+       mempool_free(pmb, phba->mbox_mem_pool);
        /* Xmit ELS RLS ACC response tag <ulpIoTag> */
        lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_ELS,
                         "2874 Xmit ELS RLS ACC response tag x%x xri x%x, "