[dpdk-dev,v2] member: fix memory leak on error

Message ID d7a73c699d9bd683e0258cf73d254e6bfe42a05d.1515776290.git.anatoly.burakov@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Anatoly Burakov Jan. 12, 2018, 5:23 p.m. UTC
  rte_member may have allocated a tailq entry or setum before failure,
so free them.

Fixes: 857ed6c68cf2 ("member: implement main API")
Cc: yipeng1.wang@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2: free setsum as well

 lib/librte_member/rte_member.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Wang, Yipeng1 Jan. 16, 2018, 5:14 p.m. UTC | #1
>-----Original Message-----
>From: Burakov, Anatoly
>Sent: Friday, January 12, 2018 9:23 AM
>To: dev@dpdk.org
>Cc: Wang, Yipeng1 <yipeng1.wang@intel.com>; Gobriel, Sameh <sameh.gobriel@intel.com>
>Subject: [PATCH v2] member: fix memory leak on error
>
>rte_member may have allocated a tailq entry or setum before failure,
>so free them.
>
>Fixes: 857ed6c68cf2 ("member: implement main API")
>Cc: yipeng1.wang@intel.com
>Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>---

Acked-by: Yipeng Wang <yipeng1.wang@intel.com>

Thanks
  
Thomas Monjalon Jan. 18, 2018, 11:40 p.m. UTC | #2
> >rte_member may have allocated a tailq entry or setum before failure,
> >so free them.
> >
> >Fixes: 857ed6c68cf2 ("member: implement main API")

Cc: stable@dpdk.org

> >Cc: yipeng1.wang@intel.com
> >Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> 
> Acked-by: Yipeng Wang <yipeng1.wang@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_member/rte_member.c b/lib/librte_member/rte_member.c
index 0c4c144..bc4cef6 100644
--- a/lib/librte_member/rte_member.c
+++ b/lib/librte_member/rte_member.c
@@ -162,8 +162,9 @@  rte_member_create(const struct rte_member_parameters *params)
 	return setsum;
 
 error_unlock_exit:
+	rte_free(te);
+	rte_free(setsum);
 	rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
-	rte_member_free(setsum);
 	return NULL;
 }