net/qede/base: add error handling for mutex allocation

Add error handling for mutex allocation failure

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
This commit is contained in:
Rasesh Mody 2018-09-29 08:14:31 +00:00 committed by Ferruh Yigit
parent bf03492a08
commit 4eae6b014c
2 changed files with 25 additions and 5 deletions

View File

@ -1133,6 +1133,9 @@ enum _ecore_status_t ecore_cxt_mngr_alloc(struct ecore_hwfn *p_hwfn)
return ECORE_NOMEM;
}
/* Set the cxt mangr pointer prior to further allocations */
p_hwfn->p_cxt_mngr = p_mngr;
/* Initialize ILT client registers */
clients = p_mngr->clients;
clients[ILT_CLI_CDUC].first.reg = ILT_CFG_REG(CDUC, FIRST_ILT);
@ -1174,13 +1177,13 @@ enum _ecore_status_t ecore_cxt_mngr_alloc(struct ecore_hwfn *p_hwfn)
/* Initialize the dynamic ILT allocation mutex */
#ifdef CONFIG_ECORE_LOCK_ALLOC
OSAL_MUTEX_ALLOC(p_hwfn, &p_mngr->mutex);
if (OSAL_MUTEX_ALLOC(p_hwfn, &p_mngr->mutex)) {
DP_NOTICE(p_hwfn, false, "Failed to alloc p_mngr->mutex\n");
return ECORE_NOMEM;
}
#endif
OSAL_MUTEX_INIT(&p_mngr->mutex);
/* Set the cxt mangr pointer priori to further allocations */
p_hwfn->p_cxt_mngr = p_mngr;
return ECORE_SUCCESS;
}

View File

@ -565,13 +565,20 @@ enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_hwfn *p_hwfn)
phys,
p_iov->bulletin.
size);
if (!p_iov->bulletin.p_virt) {
DP_NOTICE(p_hwfn, false, "Failed to alloc bulletin memory\n");
goto free_pf2vf_reply;
}
DP_VERBOSE(p_hwfn, ECORE_MSG_IOV,
"VF's bulletin Board [%p virt 0x%lx phys 0x%08x bytes]\n",
p_iov->bulletin.p_virt, (unsigned long)p_iov->bulletin.phys,
p_iov->bulletin.size);
#ifdef CONFIG_ECORE_LOCK_ALLOC
OSAL_MUTEX_ALLOC(p_hwfn, &p_iov->mutex);
if (OSAL_MUTEX_ALLOC(p_hwfn, &p_iov->mutex)) {
DP_NOTICE(p_hwfn, false, "Failed to allocate p_iov->mutex\n");
goto free_bulletin_mem;
}
#endif
OSAL_MUTEX_INIT(&p_iov->mutex);
@ -609,6 +616,16 @@ enum _ecore_status_t ecore_vf_hw_prepare(struct ecore_hwfn *p_hwfn)
return rc;
#ifdef CONFIG_ECORE_LOCK_ALLOC
free_bulletin_mem:
OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_iov->bulletin.p_virt,
p_iov->bulletin.phys,
p_iov->bulletin.size);
#endif
free_pf2vf_reply:
OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_iov->pf2vf_reply,
p_iov->pf2vf_reply_phys,
sizeof(union pfvf_tlvs));
free_vf2pf_request:
OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_iov->vf2pf_request,
p_iov->vf2pf_request_phys,