malloc: avoid unknown socket id
authorCunming Liang <cunming.liang@intel.com>
Tue, 17 Feb 2015 02:08:09 +0000 (10:08 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 24 Feb 2015 19:22:34 +0000 (20:22 +0100)
Add check for rte_socket_id(), avoid get unexpected return like (-1).
By using rte_malloc_socket(), socket id is assigned by socket_arg.
If socket_arg set to SOCKET_ID_ANY, it expects to use the socket id to which the current cores belongs.
As the thread may affinity on a cpuset, the cores in the cpuset may belongs to different NUMA nodes.
The value of _socket_id probably be SOCKET_ID_ANY(-1), the case is not expected in origin malloc_get_numa_socket().

Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
lib/librte_malloc/malloc_heap.h

index b4aec45..a47136d 100644 (file)
@@ -44,7 +44,12 @@ extern "C" {
 static inline unsigned
 malloc_get_numa_socket(void)
 {
-       return rte_socket_id();
+       unsigned socket_id = rte_socket_id();
+
+       if (socket_id == (unsigned)SOCKET_ID_ANY)
+               return 0;
+
+       return socket_id;
 }
 
 void *