summaryrefslogtreecommitdiff
path: root/drivers/staging/fsl_qbman/qman_high.c
diff options
context:
space:
mode:
authorYin Honghua-R63875 <Hong-Hua.Yin@freescale.com>2015-11-09 01:45:51 (GMT)
committerYin Honghua-R63875 <Hong-Hua.Yin@freescale.com>2015-11-09 01:45:51 (GMT)
commit61f0e119c752d7b66f974089de465729599ef7b2 (patch)
tree5fbab439958c7768eccee0d55e40e0fcab373383 /drivers/staging/fsl_qbman/qman_high.c
parentcfb981f998cf66d88f903dac8d20c52aa412482b (diff)
parent300c3ff86988bc13e310b58d9c7c786528697150 (diff)
downloadlinux-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.c12
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;