[dpdk-dev] lib/gro: fix bitwise overflow issue

Message ID 1501465404-111602-1-git-send-email-jiayu.hu@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Hu, Jiayu July 31, 2017, 1:43 a.m. UTC
  When try to get GRO types, expression "1 << i" with type "int" may
overflow. This patch is to fix this issue.

Fixes: e996506a1c07 ("lib/gro: add Generic Receive Offload API framework")
Coverity issue: 158664

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
---
 lib/librte_gro/rte_gro.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
  

Comments

Thomas Monjalon July 31, 2017, 7:01 a.m. UTC | #1
31/07/2017 03:43, Jiayu Hu:
> When try to get GRO types, expression "1 << i" with type "int" may
> overflow. This patch is to fix this issue.
> 
> Fixes: e996506a1c07 ("lib/gro: add Generic Receive Offload API framework")
> Coverity issue: 158664
> 
> Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_gro/rte_gro.c b/lib/librte_gro/rte_gro.c
index 4998b90..7853246 100644
--- a/lib/librte_gro/rte_gro.c
+++ b/lib/librte_gro/rte_gro.c
@@ -81,7 +81,7 @@  rte_gro_ctx_create(const struct rte_gro_param *param)
 		return NULL;
 
 	for (i = 0; i < RTE_GRO_TYPE_MAX_NUM; i++) {
-		gro_type_flag = 1 << i;
+		gro_type_flag = 1ULL << i;
 		if ((param->gro_types & gro_type_flag) == 0)
 			continue;
 
@@ -116,7 +116,7 @@  rte_gro_ctx_destroy(void *ctx)
 	if (gro_ctx == NULL)
 		return;
 	for (i = 0; i < RTE_GRO_TYPE_MAX_NUM; i++) {
-		gro_type_flag = 1 << i;
+		gro_type_flag = 1ULL << i;
 		if ((gro_ctx->gro_types & gro_type_flag) == 0)
 			continue;
 		destroy_tbl_fn = tbl_destroy_fn[i];
@@ -265,7 +265,7 @@  rte_gro_get_pkt_count(void *ctx)
 	uint8_t i;
 
 	for (i = 0; i < RTE_GRO_TYPE_MAX_NUM; i++) {
-		gro_type_flag = 1 << i;
+		gro_type_flag = 1ULL << i;
 		if ((gro_ctx->gro_types & gro_type_flag) == 0)
 			continue;