diff options
author | Yin Honghua-R63875 <Hong-Hua.Yin@freescale.com> | 2015-11-09 01:45:51 (GMT) |
---|---|---|
committer | Yin Honghua-R63875 <Hong-Hua.Yin@freescale.com> | 2015-11-09 01:45:51 (GMT) |
commit | 61f0e119c752d7b66f974089de465729599ef7b2 (patch) | |
tree | 5fbab439958c7768eccee0d55e40e0fcab373383 /drivers/staging/fsl_qbman/qman_high.c | |
parent | cfb981f998cf66d88f903dac8d20c52aa412482b (diff) | |
parent | 300c3ff86988bc13e310b58d9c7c786528697150 (diff) | |
download | linux-fsl-qoriq-61f0e119c752d7b66f974089de465729599ef7b2.tar.xz |
Merge pull request #61 in SDK/linux-devel from ~R54964/linux-devel:bug-fix to master
* commit '300c3ff86988bc13e310b58d9c7c786528697150':
fsl-qbman: Handle memory leaks
fsl-pme: Check for null pointers
fsl-dce: Handle memory allocation failures
fsl-dce: Correct error paths and add new labels
fsl_qbman: null check for lni in qman_ceemt_sp_release
Diffstat (limited to 'drivers/staging/fsl_qbman/qman_high.c')
-rw-r--r-- | drivers/staging/fsl_qbman/qman_high.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/staging/fsl_qbman/qman_high.c b/drivers/staging/fsl_qbman/qman_high.c index d17d301..80604b7 100644 --- a/drivers/staging/fsl_qbman/qman_high.c +++ b/drivers/staging/fsl_qbman/qman_high.c @@ -3397,7 +3397,7 @@ int qman_ceetm_sp_release(struct qm_ceetm_sp *sp) { struct qm_ceetm_sp *p; - if (sp->lni->is_claimed == 1) { + if (sp->lni && sp->lni->is_claimed == 1) { pr_err("The dependency of sub-portal has not been released!\n"); return -EBUSY; } @@ -4456,7 +4456,9 @@ int qman_ceetm_cq_claim(struct qm_ceetm_cq **cq, if (qman_ceetm_configure_cq(&cq_config)) { pr_err("Can't configure the CQ#%d with CCGRID#%d\n", idx, ccg->idx); - return -EINVAL; + list_del(&p->node); + kfree(p); + return -EINVAL; } } @@ -4503,6 +4505,8 @@ int qman_ceetm_cq_claim_A(struct qm_ceetm_cq **cq, if (qman_ceetm_configure_cq(&cq_config)) { pr_err("Can't configure the CQ#%d with CCGRID#%d\n", idx, ccg->idx); + list_del(&p->node); + kfree(p); return -EINVAL; } } @@ -4549,6 +4553,8 @@ int qman_ceetm_cq_claim_B(struct qm_ceetm_cq **cq, if (qman_ceetm_configure_cq(&cq_config)) { pr_err("Can't configure the CQ#%d with CCGRID#%d\n", idx, ccg->idx); + list_del(&p->node); + kfree(p); return -EINVAL; } } @@ -4814,6 +4820,8 @@ int qman_ceetm_lfq_claim(struct qm_ceetm_lfq **lfq, if (qman_ceetm_configure_lfqmt(&lfqmt_config)) { pr_err("Can't configure LFQMT for LFQID#%d @ CQ#%d\n", lfqid, cq->idx); + list_del(&p->node); + kfree(p); return -EINVAL; } *lfq = p; |