[dpdk-dev,v4] examples/qos_sched: fix bad bit shift operation
Commit Message
Fix issue reported by Coverity.
Coverity ID 30690: Bad bit shift operation
large_shift: In expression 1ULL << i, left shifting by more than 63 bits
has undefined behavior. The shift amount, i, is as much as 127.
Fixes: de3cfa2c9823 ("sched: initial import")
Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
---
examples/qos_sched/args.c | 4 ++--
examples/qos_sched/main.h | 5 ++++-
2 files changed, 6 insertions(+), 3 deletions(-)
Comments
> -----Original Message-----
> From: Mrozowicz, SlawomirX
> Sent: Wednesday, May 11, 2016 9:48 AM
> To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Cc: dev@dpdk.org; Singh, Jasvinder <jasvinder.singh@intel.com>;
> Mrozowicz, SlawomirX <slawomirx.mrozowicz@intel.com>
> Subject: [PATCH v4] examples/qos_sched: fix bad bit shift operation
>
> Fix issue reported by Coverity.
>
> Coverity ID 30690: Bad bit shift operation
> large_shift: In expression 1ULL << i, left shifting by more than 63 bits
> has undefined behavior. The shift amount, i, is as much as 127.
>
> Fixes: de3cfa2c9823 ("sched: initial import")
>
> Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
> ---
> examples/qos_sched/args.c | 4 ++--
> examples/qos_sched/main.h | 5 ++++-
> 2 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
> index 3e7fd08..354372d 100644
> --- a/examples/qos_sched/args.c
> +++ b/examples/qos_sched/args.c
> @@ -123,7 +123,7 @@ app_eal_core_mask(void)
> uint64_t cm = 0;
> struct rte_config *cfg = rte_eal_get_configuration();
>
> - for (i = 0; i < RTE_MAX_LCORE; i++) {
> + for (i = 0; i < APP_MAX_LCORE; i++) {
> if (cfg->lcore_role[i] == ROLE_RTE)
> cm |= (1ULL << i);
> }
> @@ -142,7 +142,7 @@ app_cpu_core_count(void)
> char path[PATH_MAX];
> uint32_t ncores = 0;
>
> - for(i = 0; i < RTE_MAX_LCORE; i++) {
> + for (i = 0; i < APP_MAX_LCORE; i++) {
> len = snprintf(path, sizeof(path), SYS_CPU_DIR, i);
> if (len <= 0 || (unsigned)len >= sizeof(path))
> continue;
> diff --git a/examples/qos_sched/main.h b/examples/qos_sched/main.h
> index 82aa0fa..c7490c6 100644
> --- a/examples/qos_sched/main.h
> +++ b/examples/qos_sched/main.h
> @@ -68,7 +68,10 @@ extern "C" {
>
> #define BURST_TX_DRAIN_US 100
>
> -#define MAX_DATA_STREAMS (RTE_MAX_LCORE/2)
> +#ifndef APP_MAX_LCORE
> +#define APP_MAX_LCORE 64
> +#endif
> +#define MAX_DATA_STREAMS (APP_MAX_LCORE/2)
> #define MAX_SCHED_SUBPORTS 8
> #define MAX_SCHED_PIPES 4096
>
> --
> 1.9.1
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> > Subject: [PATCH v4] examples/qos_sched: fix bad bit shift operation
Slawomir, please use --in-reply-to when sending a new revision,
to let us see the full history in our mailer and in the archives.
[...]
> > diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
> > index 3e7fd08..354372d 100644
> > --- a/examples/qos_sched/args.c
> > +++ b/examples/qos_sched/args.c
> > @@ -123,7 +123,7 @@ app_eal_core_mask(void)
> > uint64_t cm = 0;
> > struct rte_config *cfg = rte_eal_get_configuration();
> >
> > - for (i = 0; i < RTE_MAX_LCORE; i++) {
> > + for (i = 0; i < APP_MAX_LCORE; i++) {
> > if (cfg->lcore_role[i] == ROLE_RTE)
> > cm |= (1ULL << i);
> > }
> > @@ -142,7 +142,7 @@ app_cpu_core_count(void)
> > char path[PATH_MAX];
> > uint32_t ncores = 0;
> >
> > - for(i = 0; i < RTE_MAX_LCORE; i++) {
> > + for (i = 0; i < APP_MAX_LCORE; i++) {
> > len = snprintf(path, sizeof(path), SYS_CPU_DIR, i);
> > if (len <= 0 || (unsigned)len >= sizeof(path))
> > continue;
> > diff --git a/examples/qos_sched/main.h b/examples/qos_sched/main.h
> > index 82aa0fa..c7490c6 100644
> > --- a/examples/qos_sched/main.h
> > +++ b/examples/qos_sched/main.h
> > @@ -68,7 +68,10 @@ extern "C" {
> >
> > #define BURST_TX_DRAIN_US 100
> >
> > -#define MAX_DATA_STREAMS (RTE_MAX_LCORE/2)
> > +#ifndef APP_MAX_LCORE
> > +#define APP_MAX_LCORE 64
> > +#endif
> > +#define MAX_DATA_STREAMS (APP_MAX_LCORE/2)
> > #define MAX_SCHED_SUBPORTS 8
> > #define MAX_SCHED_PIPES 4096
> >
> > --
> > 1.9.1
>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Cristian, please remove patch content when acking.
My hand is tired of scrolling ;)
> > Fix issue reported by Coverity.
> >
> > Coverity ID 30690: Bad bit shift operation
> > large_shift: In expression 1ULL << i, left shifting by more than 63 bits
> > has undefined behavior. The shift amount, i, is as much as 127.
> >
> > Fixes: de3cfa2c9823 ("sched: initial import")
> >
> > Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Applied, thanks
@@ -123,7 +123,7 @@ app_eal_core_mask(void)
uint64_t cm = 0;
struct rte_config *cfg = rte_eal_get_configuration();
- for (i = 0; i < RTE_MAX_LCORE; i++) {
+ for (i = 0; i < APP_MAX_LCORE; i++) {
if (cfg->lcore_role[i] == ROLE_RTE)
cm |= (1ULL << i);
}
@@ -142,7 +142,7 @@ app_cpu_core_count(void)
char path[PATH_MAX];
uint32_t ncores = 0;
- for(i = 0; i < RTE_MAX_LCORE; i++) {
+ for (i = 0; i < APP_MAX_LCORE; i++) {
len = snprintf(path, sizeof(path), SYS_CPU_DIR, i);
if (len <= 0 || (unsigned)len >= sizeof(path))
continue;
@@ -68,7 +68,10 @@ extern "C" {
#define BURST_TX_DRAIN_US 100
-#define MAX_DATA_STREAMS (RTE_MAX_LCORE/2)
+#ifndef APP_MAX_LCORE
+#define APP_MAX_LCORE 64
+#endif
+#define MAX_DATA_STREAMS (APP_MAX_LCORE/2)
#define MAX_SCHED_SUBPORTS 8
#define MAX_SCHED_PIPES 4096