mempool: fix local cache initialization
authorSergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Thu, 9 Jun 2016 08:19:47 +0000 (09:19 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 15 Jun 2016 13:58:34 +0000 (15:58 +0200)
The mempool local cache was not initialized properly leading to
undefined behavior in cases where the allocated memory was used
previously and left with data.

Fixes: 213af31e0960 ("mempool: reduce structure size if no cache needed")

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_mempool/rte_mempool.c

index 22a5645..af71edd 100644 (file)
@@ -787,7 +787,7 @@ rte_mempool_create_empty(const char *name, unsigned n, unsigned elt_size,
 
        /* init the mempool structure */
        mp = mz->addr;
-       memset(mp, 0, sizeof(*mp));
+       memset(mp, 0, MEMPOOL_HEADER_SIZE(mp, cache_size));
        ret = snprintf(mp->name, sizeof(mp->name), "%s", name);
        if (ret < 0 || ret >= (int)sizeof(mp->name)) {
                rte_errno = ENAMETOOLONG;