From: Peter Spreadborough <peter.spreadboro...@broadcom.com> This patch fixes a few coverity errors reported in the feature patchset (merged) to support TruFlow on Thor2.
Fixes: 0513f0af034d ("net/bnxt/tf_ulp: add stats cache for Thor2") Signed-off-by: Peter Spreadborough <peter.spreadboro...@broadcom.com> Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapa...@broadcom.com> --- drivers/net/bnxt/hcapi/cfa_v3/mm/cfa_mm.c | 6 +++++- drivers/net/bnxt/tf_core/v3/tfc_em.c | 1 + drivers/net/bnxt/tf_core/v3/tfc_tbl_scope.c | 2 +- drivers/net/bnxt/tf_ulp/bnxt_ulp_utils.h | 3 ++- drivers/net/bnxt/tf_ulp/ulp_mapper.c | 10 +++++++--- drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 7 ++++++- drivers/net/bnxt/tf_ulp/ulp_sc_mgr.c | 2 ++ 7 files changed, 24 insertions(+), 7 deletions(-) diff --git a/drivers/net/bnxt/hcapi/cfa_v3/mm/cfa_mm.c b/drivers/net/bnxt/hcapi/cfa_v3/mm/cfa_mm.c index 61fafadb20..05528dd3e4 100644 --- a/drivers/net/bnxt/hcapi/cfa_v3/mm/cfa_mm.c +++ b/drivers/net/bnxt/hcapi/cfa_v3/mm/cfa_mm.c @@ -123,7 +123,11 @@ int cfa_mm_open(void *cmm, struct cfa_mm_open_parms *parms) } for (i = 0; i < num_blocks; i++) { - context->blk_tbl[i].prev_blk_idx = i - 1; + if (i == 0) + context->blk_tbl[i].prev_blk_idx = CFA_MM_INVALID32; + else + context->blk_tbl[i].prev_blk_idx = i - 1; + context->blk_tbl[i].next_blk_idx = i + 1; context->blk_tbl[i].num_free_records = records_per_block; context->blk_tbl[i].first_free_record = 0; diff --git a/drivers/net/bnxt/tf_core/v3/tfc_em.c b/drivers/net/bnxt/tf_core/v3/tfc_em.c index a70e35b6b1..d460ff2ee0 100644 --- a/drivers/net/bnxt/tf_core/v3/tfc_em.c +++ b/drivers/net/bnxt/tf_core/v3/tfc_em.c @@ -560,6 +560,7 @@ int tfc_em_delete_raw(struct tfc *tfcp, mpc_msg_out.cmp_type = CMPL_BASE_TYPE_MID_PATH_LONG; mpc_msg_out.msg_data = &rx_msg[TFC_MPC_HEADER_SIZE_BYTES]; mpc_msg_out.msg_size = TFC_MPC_MAX_RX_BYTES; + mpc_msg_out.chnl_id = 0; rc = tfc_mpc_send(tfcp->bp, &mpc_msg_in, diff --git a/drivers/net/bnxt/tf_core/v3/tfc_tbl_scope.c b/drivers/net/bnxt/tf_core/v3/tfc_tbl_scope.c index 1770069295..c29933b803 100644 --- a/drivers/net/bnxt/tf_core/v3/tfc_tbl_scope.c +++ b/drivers/net/bnxt/tf_core/v3/tfc_tbl_scope.c @@ -468,7 +468,7 @@ static int alloc_link_pbl(struct tfc_ts_mem_cfg *mem_cfg, uint32_t page_size, * and page tables. The allocation will occur once only per backing * store and will located by name and reused on subsequent runs. */ - total_size = page_size * total_pages; + total_size = (uint64_t)page_size * (uint64_t)total_pages; if (total_size <= (1024 * 256)) mz_size = RTE_MEMZONE_256KB; diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp_utils.h b/drivers/net/bnxt/tf_ulp/bnxt_ulp_utils.h index 5e0d906fbd..e849df2713 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_ulp_utils.h +++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp_utils.h @@ -1084,8 +1084,9 @@ bnxt_ulp_cap_feat_process(uint64_t feat_bits, uint64_t *out_bits) if (bit & BNXT_ULP_FEATURE_BIT_PARENT_DMAC) BNXT_DRV_DBG(ERR, "Parent Mac Address Feature is enabled\n"); - if (bit & BNXT_ULP_FEATURE_BIT_PORT_DMAC) + else if (bit & BNXT_ULP_FEATURE_BIT_PORT_DMAC) BNXT_DRV_DBG(ERR, "Port Mac Address Feature is enabled\n"); + if (bit & BNXT_ULP_FEATURE_BIT_MULTI_TUNNEL_FLOW) BNXT_DRV_DBG(ERR, "Multi Tunnel Flow Feature is enabled\n"); diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c index 2429ac2f1a..1a68cf5dfd 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c +++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c @@ -3612,9 +3612,13 @@ ulp_mapper_func_cond_list_process(struct bnxt_ulp_mapper_parms *parms, } } /* write the value into result */ - ulp_operand_read(val, res_local + res_size - - ULP_BITS_2_BYTE_NR(oper_size), - ULP_BITS_2_BYTE_NR(val_len)); + if (unlikely(ulp_operand_read(val, res_local + res_size - + ULP_BITS_2_BYTE_NR(oper_size), + ULP_BITS_2_BYTE_NR(val_len)))) { + BNXT_DRV_DBG(ERR, + "field idx operand read failed\n"); + return -EINVAL; + } /* convert the data to cpu format */ *res = tfp_be_to_cpu_64(*res); diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index dd5985cd7b..f75606ca81 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -517,7 +517,12 @@ ulp_rte_parser_svif_set(struct ulp_rte_parser_params *params, else svif_type = BNXT_ULP_DRV_FUNC_SVIF; } - ulp_port_db_svif_get(params->ulp_ctx, ifindex, svif_type, &svif); + + if (ulp_port_db_svif_get(params->ulp_ctx, ifindex, svif_type, &svif)) { + BNXT_DRV_DBG(ERR, "ParseErr:ifindex is not valid\n"); + return BNXT_TF_RC_ERROR; + } + svif = rte_cpu_to_be_16(svif); mask = rte_cpu_to_be_16(mask); hdr_field = ¶ms->hdr_field[BNXT_ULP_PROTO_HDR_FIELD_SVIF_IDX]; diff --git a/drivers/net/bnxt/tf_ulp/ulp_sc_mgr.c b/drivers/net/bnxt/tf_ulp/ulp_sc_mgr.c index 5fa8e240db..d17ea11526 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_sc_mgr.c +++ b/drivers/net/bnxt/tf_ulp/ulp_sc_mgr.c @@ -191,6 +191,8 @@ static uint32_t ulp_stats_cache_main_loop(void *arg) uint8_t *data; int rc; + memset(&batch_info, 0, sizeof(batch_info)); + while (true) { ctxt = NULL; while (!ctxt) { -- 2.39.3