mbuf: explicit cast of external buffer length
authorAndy Green <andy@warmcat.com>
Thu, 17 May 2018 13:49:42 +0000 (21:49 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 20 May 2018 22:21:12 +0000 (00:21 +0200)
GCC 8.1 warned:

rte_common.h:141:34:
warning: conversion from 'long unsigned int' to 'uint16_t'
{aka 'short unsigned int'} may change value [-Wconversion]
 #define RTE_PTR_DIFF(ptr1, ptr2) ((uintptr_t)(ptr1) - (uintptr_t)(ptr2))
                                  ^
rte_mbuf.h:1360:13:
note: in expansion of macro 'RTE_PTR_DIFF'
  *buf_len = RTE_PTR_DIFF(shinfo, buf_addr);

Fixes: a53aa2b9f3be ("mbuf: support attaching external buffer")

Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_mbuf/rte_mbuf.h

index 0a94e3e..ae0fa4d 100644 (file)
@@ -1360,7 +1360,7 @@ rte_pktmbuf_ext_shinfo_init_helper(void *buf_addr, uint16_t *buf_len,
        shinfo->fcb_opaque = fcb_opaque;
        rte_mbuf_ext_refcnt_set(shinfo, 1);
 
-       *buf_len = RTE_PTR_DIFF(shinfo, buf_addr);
+       *buf_len = (uint16_t)RTE_PTR_DIFF(shinfo, buf_addr);
        return shinfo;
 }