diff options
author | Radu Bulie <radu.bulie@freescale.com> | 2013-10-02 10:43:33 (GMT) |
---|---|---|
committer | Rivera Jose-B46482 <German.Rivera@freescale.com> | 2013-10-02 22:06:24 (GMT) |
commit | c47eaed207b4c979000215bf38da5ec291ccb02f (patch) | |
tree | 1ab312039d238261134c6de1f9b6007fa00e0025 | |
parent | 2caf0b68157701a12145db5f6d60fce1650c9389 (diff) | |
download | linux-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>
-rw-r--r-- | drivers/staging/fsl_dpa_offload/dpa_classifier.c | 5 |
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; } |