DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 1/2] mempool: fix returned value on 64 bit after counting objects
@ 2015-05-25 16:27 Adrien Mazarguil
  2015-05-25 16:27 ` [dpdk-dev] [PATCH 2/2] mempool: fix pages computation to determine number of objects Adrien Mazarguil
  2015-05-27  0:43 ` [dpdk-dev] [PATCH 1/2] mempool: fix returned value on 64 bit after counting objects Ananyev, Konstantin
  0 siblings, 2 replies; 10+ messages in thread
From: Adrien Mazarguil @ 2015-05-25 16:27 UTC (permalink / raw)
  To: dev

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>
---
 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 01972ba..d1a02a2 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -361,7 +361,7 @@ rte_mempool_xmem_usage(void *vaddr, uint32_t elt_num, size_t elt_sz,
 	if ((n = rte_mempool_obj_iter(vaddr, elt_num, elt_sz, 1,
 			paddr, pg_num, pg_shift, mempool_lelem_iter,
 			&uv)) != elt_num) {
-		return (-n);
+		return (-(ssize_t)n);
 	}
 
 	uv = RTE_ALIGN_CEIL(uv, pg_sz);
-- 
2.1.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-05-29 18:41 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-25 16:27 [dpdk-dev] [PATCH 1/2] mempool: fix returned value on 64 bit after counting objects Adrien Mazarguil
2015-05-25 16:27 ` [dpdk-dev] [PATCH 2/2] mempool: fix pages computation to determine number of objects Adrien Mazarguil
2015-05-25 18:20   ` Ananyev, Konstantin
2015-05-26  9:14     ` Adrien Mazarguil
2015-05-27  0:41   ` [dpdk-dev] [PATCHv2] " Konstantin Ananyev
2015-05-27  7:52     ` Adrien Mazarguil
2015-05-27  8:40   ` [dpdk-dev] [PATCHv3] " Konstantin Ananyev
2015-05-29 15:58     ` Thomas Monjalon
2015-05-27  0:43 ` [dpdk-dev] [PATCH 1/2] mempool: fix returned value on 64 bit after counting objects Ananyev, Konstantin
2015-05-29 15:57   ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).