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

Wang, Yipeng1 yipeng1.wang at intel.com
Fri Dec 22 19:33:09 CET 2017


>-----Original Message-----
>From: Burakov, Anatoly
>Yep, i can see that now. Didn't think to look inside rte_member_free()
>:/ However, you're creating a race condition there - you're unlocking a
>tailq, and then locking (and unlocking) it again inside
>rte_member_free() - it probably needs _thread_unsafe() functions that
>you can call from behind the lock.
>
>--

Thank you Anatoly,

I realize that rte_member_free does not do anything good here. As a fix, I think the following should work. Is there any other concern?

diff --git a/lib/librte_member/rte_member.c b/lib/librte_member/rte_member.c
index cc9ea84..25934e8 100644
--- a/lib/librte_member/rte_member.c
+++ b/lib/librte_member/rte_member.c
@@ -192,7 +192,8 @@ rte_member_create(const struct rte_member_parameters *params)

 error_unlock_exit:
        rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);
-       rte_member_free(setsum);
+       rte_free(te);
+       rte_free(setsum);
        return NULL;
 }

Thank you!


More information about the dev mailing list