eal: fix check when retrieving current CPU affinity
authorDavid Marchand <david.marchand@redhat.com>
Tue, 19 Feb 2019 20:38:13 +0000 (21:38 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 7 Mar 2019 15:37:14 +0000 (16:37 +0100)
pthread_getaffinity_np returns a >0 value when failing.

This is mainly for the sake of correctness.
The only case where it could fail is when passing an incorrect cpuset
size wrt to the kernel.

Fixes: 2eba8d21f3c9 ("eal: restrict cores auto detection")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
lib/librte_eal/common/eal_common_options.c

index 6c96f45..1f45f82 100644 (file)
@@ -1343,10 +1343,9 @@ eal_auto_detect_cores(struct rte_config *cfg)
        unsigned int lcore_id;
        unsigned int removed = 0;
        rte_cpuset_t affinity_set;
-       pthread_t tid = pthread_self();
 
-       if (pthread_getaffinity_np(tid, sizeof(rte_cpuset_t),
-                               &affinity_set) < 0)
+       if (pthread_getaffinity_np(pthread_self(), sizeof(rte_cpuset_t),
+                               &affinity_set))
                CPU_ZERO(&affinity_set);
 
        for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {