summaryrefslogtreecommitdiff
path: root/drivers/staging/fsl_dpa_offload/dpa_classifier.c
diff options
context:
space:
mode:
authorRadu Bulie <radu.bulie@freescale.com>2013-10-02 10:43:33 (GMT)
committerRivera Jose-B46482 <German.Rivera@freescale.com>2013-10-02 22:06:24 (GMT)
commitc47eaed207b4c979000215bf38da5ec291ccb02f (patch)
tree1ab312039d238261134c6de1f9b6007fa00e0025 /drivers/staging/fsl_dpa_offload/dpa_classifier.c
parent2caf0b68157701a12145db5f6d60fce1650c9389 (diff)
downloadlinux-fsl-qoriq-c47eaed207b4c979000215bf38da5ec291ccb02f.tar.xz
dpa_offload: Fix double free pointer issue in DPA multicast component
replic_grp_params variable would be freed a second time if the multicast group creation function failed to obtain a group handle from the FMD driver or imported from the user. The patch fixes the issue by freeing the resource, before any checks are performed on the group handle. Signed-off-by: Radu Bulie <radu.bulie@freescale.com> Change-Id: I547b0a2d476e1cd57aa3b561efa9a2cba99b7e3f Reviewed-on: http://git.am.freescale.net:8181/5147 Reviewed-by: Bulie Radu-Andrei-B37577 <Radu.Bulie@freescale.com> Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Marian-Cornel Chereji <marian.chereji@freescale.com> Reviewed-by: Rivera Jose-B46482 <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/staging/fsl_dpa_offload/dpa_classifier.c')
-rw-r--r--drivers/staging/fsl_dpa_offload/dpa_classifier.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/staging/fsl_dpa_offload/dpa_classifier.c b/drivers/staging/fsl_dpa_offload/dpa_classifier.c
index 751dacd..0c081b9 100644
--- a/drivers/staging/fsl_dpa_offload/dpa_classifier.c
+++ b/drivers/staging/fsl_dpa_offload/dpa_classifier.c
@@ -7485,8 +7485,6 @@ int dpa_classif_mcast_create_group(
pgroup->entries[0].used = true;
pgroup->member_ids[0] = 0;
pgroup->num_members++;
-
- kfree(replic_grp_params);
} else {
pgroup->group = res->group_node;
/* mark prefilled members in index array member */
@@ -7499,6 +7497,8 @@ int dpa_classif_mcast_create_group(
pgroup->num_members = group_params->prefilled_members;
}
+ kfree(replic_grp_params);
+
if (!pgroup->group) {
log_err("Could not create %s group %d\n",
(group_params->prefilled_members > 0) ? "imported" :
@@ -7524,7 +7524,6 @@ dpa_classif_mcast_create_group_error:
}
*grpd = DPA_OFFLD_DESC_NONE;
- kfree(replic_grp_params);
return err;
}