mempool: fix anonymous populate
[dpdk.git] / lib / librte_mempool / rte_mempool.c
index 8da2e47..f8d453d 100644 (file)
@@ -390,11 +390,6 @@ rte_mempool_populate_virt(struct rte_mempool *mp, char *addr,
 
                iova = get_iova(addr + off);
 
-               if (iova == RTE_BAD_IOVA && rte_eal_has_hugepages()) {
-                       ret = -EINVAL;
-                       goto fail;
-               }
-
                /* populate with the largest group of contiguous pages */
                for (phys_len = RTE_MIN(
                        (size_t)(RTE_PTR_ALIGN_CEIL(addr + off + 1, pg_sz) -
@@ -650,8 +645,10 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
        }
 
        ret = mempool_ops_alloc_once(mp);
-       if (ret != 0)
-               return ret;
+       if (ret < 0) {
+               rte_errno = -ret;
+               return 0;
+       }
 
        size = get_anon_size(mp);
        if (size < 0) {
@@ -675,8 +672,10 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
 
        ret = rte_mempool_populate_virt(mp, addr, size, getpagesize(),
                rte_mempool_memchunk_anon_free, addr);
-       if (ret == 0)
+       if (ret < 0) {
+               rte_errno = -ret;
                goto fail;
+       }
 
        return mp->populated_size;