[dpdk-dev] [PATCH] malloc: fix size annotation for NUMA-aware realloc

Maxime Coquelin mcoqueli at redhat.com
Thu Jun 10 14:19:19 CEST 2021



On 6/10/21 2:09 PM, David Marchand wrote:
> __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 at dpdk.org
> 
> Signed-off-by: David Marchand <david.marchand at redhat.com>
> ---
>  lib/eal/include/rte_malloc.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/eal/include/rte_malloc.h b/lib/eal/include/rte_malloc.h
> index 3af64f8761..895bb6e849 100644
> --- a/lib/eal/include/rte_malloc.h
> +++ b/lib/eal/include/rte_malloc.h
> @@ -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
> 

Tested-by: Maxime Coquelin <maxime.coquelin at redhat.com>

Thanks!
Maxime



More information about the dev mailing list