mempool: fix first memory area notification
authorPavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Sun, 24 Dec 2017 12:47:55 +0000 (18:17 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 12 Jan 2018 17:30:20 +0000 (18:30 +0100)
Mempool creation needs to be completed first before notifying mempool to
register the mempool area.

Fixes: 12b8cc1a7e86 ("mempool: notify memory area to pool")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
lib/librte_mempool/rte_mempool.c

index d50dba4..6d17022 100644 (file)
@@ -367,11 +367,6 @@ rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
        struct rte_mempool_memhdr *memhdr;
        int ret;
 
-       /* Notify memory area to mempool */
-       ret = rte_mempool_ops_register_memory_area(mp, vaddr, iova, len);
-       if (ret != -ENOTSUP && ret < 0)
-               return ret;
-
        /* create the internal ring if not already done */
        if ((mp->flags & MEMPOOL_F_POOL_CREATED) == 0) {
                ret = rte_mempool_ops_alloc(mp);
@@ -380,6 +375,11 @@ rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
                mp->flags |= MEMPOOL_F_POOL_CREATED;
        }
 
+       /* Notify memory area to mempool */
+       ret = rte_mempool_ops_register_memory_area(mp, vaddr, iova, len);
+       if (ret != -ENOTSUP && ret < 0)
+               return ret;
+
        /* mempool is already populated */
        if (mp->populated_size >= mp->size)
                return -ENOSPC;