From 470b5c23adf2f4ec5aaece93c711048d84cd3eab Mon Sep 17 00:00:00 2001 From: Ferruh Yigit Date: Mon, 9 Nov 2020 13:30:05 +0000 Subject: [PATCH] net/af_xdp: fix pointer storage size MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 'uint64_t' is used to hold the pointer, for 32-bits build this assumption is wrong and giving following build error: rte_eth_af_xdp.c: In function ‘xdp_umem_configure’: rte_eth_af_xdp.c:970:15: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] 970 | base_addr = (void *)get_base_addr(mb_pool, &align); | ^ Replacing the 'uint64_t' return type of the 'get_base_addr()' to the 'uintptr_t'. Although not sure if the overall logic supports the 32-bits, using 'uintptr_t' should be safe both for 64/32 bits. Fixes: d8a210774e1d ("net/af_xdp: support unaligned umem chunks") Cc: stable@dpdk.org Signed-off-by: Ferruh Yigit Tested-by: Ciara Loftus --- drivers/net/af_xdp/rte_eth_af_xdp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index 4076ff797c..2c7892bd7e 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -910,13 +910,13 @@ eth_link_update(struct rte_eth_dev *dev __rte_unused, } #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG) -static inline uint64_t get_base_addr(struct rte_mempool *mp, uint64_t *align) +static inline uintptr_t get_base_addr(struct rte_mempool *mp, uint64_t *align) { struct rte_mempool_memhdr *memhdr; - uint64_t memhdr_addr, aligned_addr; + uintptr_t memhdr_addr, aligned_addr; memhdr = STAILQ_FIRST(&mp->mem_list); - memhdr_addr = (uint64_t)memhdr->addr; + memhdr_addr = (uintptr_t)memhdr->addr; aligned_addr = memhdr_addr & ~(getpagesize() - 1); *align = memhdr_addr - aligned_addr; -- 2.20.1