params is not freed if pthread_create() fails. The fix is
straight-forward.

Fixes: 3d09a6e26d8b ("eal: fix threads block on barrier")

Reported-by: Olivier Matz <olivier.m...@6wind.com>
Signed-off-by: Jianfeng Tan <jianfeng....@intel.com>
---
 lib/librte_eal/common/eal_common_thread.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/eal_common_thread.c 
b/lib/librte_eal/common/eal_common_thread.c
index 5f0c61f..c18a112 100644
--- a/lib/librte_eal/common/eal_common_thread.c
+++ b/lib/librte_eal/common/eal_common_thread.c
@@ -183,8 +183,10 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name,
        pthread_barrier_init(&params->configured, NULL, 2);
 
        ret = pthread_create(thread, attr, rte_thread_init, (void *)params);
-       if (ret != 0)
+       if (ret != 0) {
+               free(params);
                return ret;
+       }
 
        if (name != NULL) {
                ret = rte_thread_setname(*thread, name);
-- 
2.7.4

Reply via email to