]> git.droids-corp.org - dpdk.git/commitdiff
distributor: fix potential overflow
authorBruce Richardson <bruce.richardson@intel.com>
Thu, 17 Feb 2022 15:02:39 +0000 (15:02 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 27 Feb 2022 18:06:59 +0000 (19:06 +0100)
Coverity flags the fact that the tag values used in distributor are
32-bit, which means that when we use bit-manipulation to convert a tag
match/no-match to a bit in an array, we need to typecast to a 64-bit
type before shifting past 32 bits.

Coverity issue: 375808
Fixes: 08ccf3faa6a9 ("distributor: new packet distributor library")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
lib/distributor/rte_distributor_single.c

index de90aa8bb55bf7ac62dbdaf4888086ed98298df2..2c77ac454a0a9be5b2b58e73cdb62b91cc90ae39 100644 (file)
@@ -245,8 +245,7 @@ rte_distributor_process_single(struct rte_distributor_single *d,
                         * worker given by the bit-position
                         */
                        for (i = 0; i < d->num_workers; i++)
-                               match |= (!(d->in_flight_tags[i] ^ new_tag)
-                                       << i);
+                               match |= ((uint64_t)!(d->in_flight_tags[i] ^ new_tag) << i);
 
                        /* Only turned-on bits are considered as match */
                        match &= d->in_flight_bitmask;