From 6770a5f8a24855e679e78dbe6abf13dbc5543926 Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Tue, 10 Jul 2018 12:44:47 +0200 Subject: [PATCH] eal: fix return codes on control thread failure This function returned positive error numbers instead of negative ones as desbribed in the doc. What's worse, multiple of its callers only check for (rc < 0) to detect failure. It was incorrectly assumed that pthread_create and pthread_setaffinity_np return negative errnos. They always returns positive ones, so this patch negates their return values before returning. Fixes: 9e5afc72c909 ("eal: add function to create control threads") Cc: stable@dpdk.org Signed-off-by: Dariusz Stojaczyk Acked-by: Anatoly Burakov Reviewed-by: Olivier Matz --- lib/librte_eal/common/eal_common_thread.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/librte_eal/common/eal_common_thread.c b/lib/librte_eal/common/eal_common_thread.c index 8110ac2ae1..48ef4d6de6 100644 --- a/lib/librte_eal/common/eal_common_thread.c +++ b/lib/librte_eal/common/eal_common_thread.c @@ -175,7 +175,7 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name, params = malloc(sizeof(*params)); if (!params) - return -1; + return -ENOMEM; params->start_routine = start_routine; params->arg = arg; @@ -185,7 +185,7 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name, ret = pthread_create(thread, attr, rte_thread_init, (void *)params); if (ret != 0) { free(params); - return ret; + return -ret; } if (name != NULL) { @@ -228,5 +228,5 @@ fail: } pthread_cancel(*thread); pthread_join(*thread, NULL); - return ret; + return -ret; } -- 2.20.1