Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[SCSI] lpfc: don't free mempool if mailbox is busy

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>

authored by

James Smart and committed by
James Bottomley
8aee918a e8216dee

+4 -2
+4 -2
drivers/scsi/lpfc/lpfc_init.c
··· 389 389 390 390 lpfc_init_link(phba, pmb, phba->cfg_topology, phba->cfg_link_speed); 391 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 394 lpfc_printf_log(phba, 394 395 KERN_ERR, 395 396 LOG_INIT, ··· 407 406 readl(phba->HAregaddr); /* flush */ 408 407 409 408 phba->hba_state = LPFC_HBA_ERROR; 410 - mempool_free(pmb, phba->mbox_mem_pool); 409 + if (rc != MBX_BUSY) 410 + mempool_free(pmb, phba->mbox_mem_pool); 411 411 return -EIO; 412 412 } 413 413 /* MBOX buffer will be freed in mbox compl */