memzone: check NUMA id when reserving a zone
authorTonghao Zhang <nic@opencloud.tech>
Fri, 12 May 2017 06:03:43 +0000 (23:03 -0700)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 5 Jun 2017 16:23:34 +0000 (18:23 +0200)
If the socket_id is invalid (e.g. -2, -3), the
memzone_reserve_aligned_thread_unsafe should return the
EINVAL and not ENOMEM. To avoid it, we should check the
socket_id before calling malloc_heap_alloc.

Signed-off-by: Tonghao Zhang <nic@opencloud.tech>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/common/eal_common_memzone.c

index 64f4e0a..3026e36 100644 (file)
@@ -189,7 +189,8 @@ memzone_reserve_aligned_thread_unsafe(const char *name, size_t len,
                return NULL;
        }
 
-       if ((socket_id != SOCKET_ID_ANY) && (socket_id >= RTE_MAX_NUMA_NODES)) {
+       if ((socket_id != SOCKET_ID_ANY) &&
+           (socket_id >= RTE_MAX_NUMA_NODES || socket_id < 0)) {
                rte_errno = EINVAL;
                return NULL;
        }