On 2/23/2022 7:17 AM, Morten Brørup wrote:
From: Stephen Hemminger [mailto:step...@networkplumber.org]
Sent: Tuesday, 22 February 2022 17.03
On Tue, 22 Feb 2022 15:13:53 +0100
Morten Brørup <m...@smartsharesystems.com> wrote:
From: Megha Ajmera [mailto:megha.ajm...@intel.com]
Sent: Tuesday, 22 February 2022 14.19
Masking of core mask was incorrect. Instead of using 1U for
shifting,
it
should be using 1LU as the result is assigned to uint64.
CID 375859: Potentially overflowing expression "1U <<
app_main_core"
with
type "unsigned int" (32 bits, unsigned) is evaluated using 32-bit
arithmetic,
and then used in a context that expects an expression of type
"uint64_t"
(64 bits, unsigned).
Coverity issue: 375859
Signed-off-by: Megha Ajmera <megha.ajm...@intel.com>
---
examples/qos_sched/args.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
index 10ca7bea61..44f2f5640e 100644
--- a/examples/qos_sched/args.c
+++ b/examples/qos_sched/args.c
@@ -433,7 +433,7 @@ app_parse_args(int argc, char **argv)
return -1;
}
}
- app_used_core_mask |= 1u << app_main_core;
+ app_used_core_mask |= 1lu << app_main_core;
Still wrong on 32 bit platforms, where long unsigned int is still 32
bits.
Use this instead:
app_used_core_mask |= RTE_BIT64(app_main_core);
DPDK now supports > 64 lcores. So all code using/assuming a 64 bit mask
is broken.
Good point. Is there a TODO-list where such a general review request can be
filed, or should we just file it as a system-wide bug in Bugzilla?
Nonetheless, I think this one-line fix should be accepted as a short term
solution.
Hi Morten,
I suspect there can be more places that testpmd assumes
max core number is 64, someone needs to spend time to
analyze and fix it.