[dpdk-dev] [PATCH] lib/librte_ip_frag:fix ip_frag_key_cmp bug

Thomas Monjalon thomas at monjalon.net
Sun Oct 28 11:18:57 CET 2018


24/08/2018 13:04, Ananyev, Konstantin:
> From: Li Han [mailto:han.li1 at zte.com.cn]
> > 
> > in struct ip_frag_key,src_dst[] type is uint64_t.
> > but "val" which to store the calc restult ,type is uint32_t.
> > we may lost high 32 bit key. and function return value is int,
> > but it won't return < 0.
> > 
> > Signed-off-by: Li Han <han.li1 at zte.com.cn>
> > ---
> >  lib/librte_ip_frag/ip_frag_common.h | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/lib/librte_ip_frag/ip_frag_common.h b/lib/librte_ip_frag/ip_frag_common.h
> > index 197acf8..ca69680 100644
> > --- a/lib/librte_ip_frag/ip_frag_common.h
> > +++ b/lib/librte_ip_frag/ip_frag_common.h
> > @@ -69,10 +69,10 @@ struct ip_frag_pkt * ip_frag_lookup(struct rte_ip_frag_tbl *tbl,
> >  }
> > 
> >  /* compare two keys */
> > -static inline int
> > +static inline uint64_t
> >  ip_frag_key_cmp(const struct ip_frag_key * k1, const struct ip_frag_key * k2)
> >  {
> > -	uint32_t i, val;
> > +	uint64_t i, val;
> >  	val = k1->id ^ k2->id;
> >  	for (i = 0; i < k1->key_len; i++)
> >  		val |= k1->src_dst[i] ^ k2->src_dst[i];
> > --
> 
> As a nit - no point to make *i* 64-bit.
> Apart from that:
> Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>

Applied with suggested change, thanks






More information about the dev mailing list