mempool: fix returned value after counting objects
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Mon, 25 May 2015 16:27:45 +0000 (18:27 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 29 May 2015 18:27:23 +0000 (20:27 +0200)
commite221e274aa453a8a4674c9998984123792dad505
tree8064de171d50843abec6f6376049bbb25ee1ed19
parent5f3aa4a702d2cf4c05f52f3eb5fba7437e76bde7
mempool: fix returned value after counting objects

rte_mempool_xmem_usage()'s return type is ssize_t which has the same
architecture-dependent width as size_t but is signed.

On 64-bit architectures, returning a negative uint32_t value without casting
to ssize_t first does not work as intended, the sign bit is lost and the
returned value is garbage.

This commit fixes an assertion failure in testpmd on 64 bit architectures
when combining --no-huge and --mp-anon outside of Xen Dom0:

 PANIC in mempool_anon_create():
 line 170        assert "elt_num == mp->size" failed

Fixes: 148f963fb532 ("xen: core library changes")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
lib/librte_mempool/rte_mempool.c