malloc: fix size annotation for NUMA-aware realloc
authorDavid Marchand <david.marchand@redhat.com>
Thu, 10 Jun 2021 12:09:22 +0000 (14:09 +0200)
committerDavid Marchand <david.marchand@redhat.com>
Fri, 11 Jun 2021 09:03:38 +0000 (11:03 +0200)
__rte_alloc_size is mapped to compiler alloc_size attribute.

Quoting gcc documentation:
"""
alloc_size
    The alloc_size attribute is used to tell the compiler that the
    function return value points to memory, where the size is given by
    one or two of the functions parameters. GCC uses this information
    to improve the correctness of __builtin_object_size.

    The function parameter(s) denoting the allocated size are specified
    by one or two integer arguments supplied to the attribute.
    The allocated size is either the value of the single function
    argument specified or the product of the two function arguments
    specified. Argument numbering starts at one.
"""

In rte_realloc_socket case, only 'size' matters.

Note: this has been spotted by Maxime trying to use rte_realloc_socket
and compiling with gcc 11.

Fixes: 17b347dab769 ("malloc: add alloc_size attribute to functions")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Maxime Coquelin <maxime.coquelin@redhat.com>
lib/eal/include/rte_malloc.h

index 3af64f8..895bb6e 100644 (file)
@@ -160,7 +160,7 @@ rte_realloc(void *ptr, size_t size, unsigned int align)
 __rte_experimental
 void *
 rte_realloc_socket(void *ptr, size_t size, unsigned int align, int socket)
-       __rte_alloc_size(2, 3);
+       __rte_alloc_size(2);
 
 /**
  * This function allocates memory from the huge-page area of memory. The memory