From c47eaed207b4c979000215bf38da5ec291ccb02f Mon Sep 17 00:00:00 2001 From: Radu Bulie Date: Wed, 2 Oct 2013 10:43:33 +0000 Subject: 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 Change-Id: I547b0a2d476e1cd57aa3b561efa9a2cba99b7e3f Reviewed-on: http://git.am.freescale.net:8181/5147 Reviewed-by: Bulie Radu-Andrei-B37577 Tested-by: Review Code-CDREVIEW Reviewed-by: Marian-Cornel Chereji Reviewed-by: Rivera Jose-B46482 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; } -- cgit v0.10.2