Hi,

On 08/16/2015 09:08 PM, Dan Aloni wrote:
> The rest of the code expects pg_num <= RTE_DIM(mp->elt_pa).
> 
> Signed-off-by: Dan Aloni <dan at kernelim.com>
> ---
>  lib/librte_mempool/rte_mempool.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_mempool/rte_mempool.c 
> b/lib/librte_mempool/rte_mempool.c
> index 8e185c545479..edcfa8bf9cb1 100644
> --- a/lib/librte_mempool/rte_mempool.c
> +++ b/lib/librte_mempool/rte_mempool.c
> @@ -461,7 +461,7 @@ rte_mempool_xmem_create(const char *name, unsigned n, 
> unsigned elt_size,
>       }
>  
>       /* Check that pg_num and pg_shift parameters are valid. */
> -     if (pg_num < RTE_DIM(mp->elt_pa) || pg_shift > MEMPOOL_PG_SHIFT_MAX) {
> +     if (pg_num > RTE_DIM(mp->elt_pa) || pg_shift > MEMPOOL_PG_SHIFT_MAX) {
>               rte_errno = EINVAL;
>               return NULL;
>       }
> 


Could you give some details about the conditions to reproduce and the
consequences of the issue?

>From what I see, RTE_DIM(mp->elt_pa) is always 1:

        #define MEMPOOL_PG_NUM_DEFAULT  1
        struct rte_mempool {
                ...
                phys_addr_t elt_pa[MEMPOOL_PG_NUM_DEFAULT];
        }  __rte_cache_aligned;

>From rte_mempool_xmem_create() documentation, pg_num gives the size of
the paddr array, which is allocated by the caller. So I think there is
no issue here.

Regards,
Olivier

Reply via email to