|
@@ -350,7 +350,12 @@ lpfc_config_port_post(struct lpfc_hba *phba)
|
|
|
mb = &pmb->u.mb;
|
|
|
|
|
|
/* Get login parameters for NID. */
|
|
|
- lpfc_read_sparam(phba, pmb, 0);
|
|
|
+ rc = lpfc_read_sparam(phba, pmb, 0);
|
|
|
+ if (rc) {
|
|
|
+ mempool_free(pmb, phba->mbox_mem_pool);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
pmb->vport = vport;
|
|
|
if (lpfc_sli_issue_mbox(phba, pmb, MBX_POLL) != MBX_SUCCESS) {
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
|
@@ -359,7 +364,7 @@ lpfc_config_port_post(struct lpfc_hba *phba)
|
|
|
mb->mbxCommand, mb->mbxStatus);
|
|
|
phba->link_state = LPFC_HBA_ERROR;
|
|
|
mp = (struct lpfc_dmabuf *) pmb->context1;
|
|
|
- mempool_free( pmb, phba->mbox_mem_pool);
|
|
|
+ mempool_free(pmb, phba->mbox_mem_pool);
|
|
|
lpfc_mbuf_free(phba, mp->virt, mp->phys);
|
|
|
kfree(mp);
|
|
|
return -EIO;
|
|
@@ -571,6 +576,11 @@ lpfc_config_port_post(struct lpfc_hba *phba)
|
|
|
}
|
|
|
/* MBOX buffer will be freed in mbox compl */
|
|
|
pmb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
|
|
|
+ if (!pmb) {
|
|
|
+ phba->link_state = LPFC_HBA_ERROR;
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
lpfc_config_async(phba, pmb, LPFC_ELS_RING);
|
|
|
pmb->mbox_cmpl = lpfc_config_async_cmpl;
|
|
|
pmb->vport = phba->pport;
|
|
@@ -588,6 +598,11 @@ lpfc_config_port_post(struct lpfc_hba *phba)
|
|
|
|
|
|
/* Get Option rom version */
|
|
|
pmb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
|
|
|
+ if (!pmb) {
|
|
|
+ phba->link_state = LPFC_HBA_ERROR;
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
lpfc_dump_wakeup_param(phba, pmb);
|
|
|
pmb->mbox_cmpl = lpfc_dump_wakeup_param_cmpl;
|
|
|
pmb->vport = phba->pport;
|