aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 4cdf3464267f..a5723ad0a099 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -389,7 +389,8 @@ lpfc_config_port_post(struct lpfc_hba * phba)
389 389
390 lpfc_init_link(phba, pmb, phba->cfg_topology, phba->cfg_link_speed); 390 lpfc_init_link(phba, pmb, phba->cfg_topology, phba->cfg_link_speed);
391 pmb->mbox_cmpl = lpfc_sli_def_mbox_cmpl; 391 pmb->mbox_cmpl = lpfc_sli_def_mbox_cmpl;
392 if (lpfc_sli_issue_mbox(phba, pmb, MBX_NOWAIT) != MBX_SUCCESS) { 392 rc = lpfc_sli_issue_mbox(phba, pmb, MBX_NOWAIT);
393 if (rc != MBX_SUCCESS) {
393 lpfc_printf_log(phba, 394 lpfc_printf_log(phba,
394 KERN_ERR, 395 KERN_ERR,
395 LOG_INIT, 396 LOG_INIT,
@@ -406,7 +407,8 @@ lpfc_config_port_post(struct lpfc_hba * phba)
406 readl(phba->HAregaddr); /* flush */ 407 readl(phba->HAregaddr); /* flush */
407 408
408 phba->hba_state = LPFC_HBA_ERROR; 409 phba->hba_state = LPFC_HBA_ERROR;
409 mempool_free(pmb, phba->mbox_mem_pool); 410 if (rc != MBX_BUSY)
411 mempool_free(pmb, phba->mbox_mem_pool);
410 return -EIO; 412 return -EIO;
411 } 413 }
412 /* MBOX buffer will be freed in mbox compl */ 414 /* MBOX buffer will be freed in mbox compl */