From: Dariusz Stojaczyk Date: Tue, 10 Jul 2018 10:44:47 +0000 (+0200) Subject: eal: fix return codes on control thread failure X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=6770a5f8a24855e679e78dbe6abf13dbc5543926;p=dpdk.git 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 --- 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; }