Re: [PATCH] mempool: fix the inverted pg_num check on create
From: Olivier MATZ <hidden>
Date: 2015-08-17 08:55:45
Hi, On 08/16/2015 09:08 PM, Dan Aloni wrote:
quoted hunk ↗ jump to hunk
The rest of the code expects pg_num <= RTE_DIM(mp->elt_pa). Signed-off-by: Dan Aloni <redacted> --- 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