mbuf: explicit casts of reference counter
authorAndy Green <andy@warmcat.com>
Thu, 17 May 2018 13:49:32 +0000 (21:49 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 20 May 2018 22:20:48 +0000 (00:20 +0200)
differences to the atomic16 are signed, but the
atomic16 itself is unsigned.  It needs to be
made explicit with casts.

Fixes: af75078fece3 ("first public release")
Fixes: a53aa2b9f3be ("mbuf: support attaching external buffer")
Cc: stable@dpdk.org
Signed-off-by: Andy Green <andy@warmcat.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_mbuf/rte_mbuf.h

index 8a2dae2..b776a6f 100644 (file)
@@ -806,7 +806,7 @@ rte_mbuf_refcnt_read(const struct rte_mbuf *m)
 static inline void
 rte_mbuf_refcnt_set(struct rte_mbuf *m, uint16_t new_value)
 {
-       rte_atomic16_set(&m->refcnt_atomic, new_value);
+       rte_atomic16_set(&m->refcnt_atomic, (int16_t)new_value);
 }
 
 /* internal */
@@ -837,8 +837,8 @@ rte_mbuf_refcnt_update(struct rte_mbuf *m, int16_t value)
         */
        if (likely(rte_mbuf_refcnt_read(m) == 1)) {
                ++value;
-               rte_mbuf_refcnt_set(m, value);
-               return value;
+               rte_mbuf_refcnt_set(m, (uint16_t)value);
+               return (uint16_t)value;
        }
 
        return __rte_mbuf_refcnt_update(m, value);
@@ -909,7 +909,7 @@ static inline void
 rte_mbuf_ext_refcnt_set(struct rte_mbuf_ext_shared_info *shinfo,
        uint16_t new_value)
 {
-       rte_atomic16_set(&shinfo->refcnt_atomic, new_value);
+       rte_atomic16_set(&shinfo->refcnt_atomic, (int16_t)new_value);
 }
 
 /**
@@ -929,8 +929,8 @@ rte_mbuf_ext_refcnt_update(struct rte_mbuf_ext_shared_info *shinfo,
 {
        if (likely(rte_mbuf_ext_refcnt_read(shinfo) == 1)) {
                ++value;
-               rte_mbuf_ext_refcnt_set(shinfo, value);
-               return value;
+               rte_mbuf_ext_refcnt_set(shinfo, (uint16_t)value);
+               return (uint16_t)value;
        }
 
        return (uint16_t)rte_atomic16_add_return(&shinfo->refcnt_atomic, value);