[dpdk-dev] [PATCH] lib/librte_ip_frag:fix ip_frag_key_cmp bug
Ferruh Yigit
ferruh.yigit at intel.com
Thu Aug 9 14:40:27 CEST 2018
On 8/2/2018 3:01 AM, Li Han wrote:
> 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>
Fix looks good to me [1], but not sure if it worth getting risk to merge it
after rc3, taking into account that original code is from 2014.
[1] perhaps no need to make "i" uint64_t
> ---
> 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];
>
More information about the dev
mailing list