From patchwork Fri Aug 11 08:58:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nithin Dabilpuram X-Patchwork-Id: 130143 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CB33243032; Fri, 11 Aug 2023 11:01:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CD186432AE; Fri, 11 Aug 2023 10:59:43 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 7DC764329C for ; Fri, 11 Aug 2023 10:59:39 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 37AN2WVC011282 for ; Fri, 11 Aug 2023 01:59:39 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=8yw6KObC2L5NQ4Ikk3RRkmTVZUn3F0w4SawKPKfe9qQ=; b=Njg4Zc1z8vlXYgWSbFrWvPC/ZNdw9XQDXVLIXK8nC2PVNQ9LP+e8WRAQVMa1ajajurUL 5tRsgSaIfx5ZPjwrPHQsubY6ufubWvNRuCZ3SFGYIi1VL1vdwgFTE0nW93BC+oULc83S 5Rk63IC2ciAuO+S30RjV8ZNfrJrHEObxppJWkgYvcxqaNOkvNU++G6XR8kmnbg25Ajef 1Ml/0Cs68spoRj36L74s+p0UMhVOdpqZvRioNiVZrU9J1w1Y1XxxDPtfds3QIIhHZvc+ oZz/GhJsoqa9Tz/ExiEMbfU+ygNPW/MFGJvYKhGDiHMu3SNCXNpgtGixk9/L+sr+skpX ew== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3sd8ya1gcd-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Fri, 11 Aug 2023 01:59:38 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Fri, 11 Aug 2023 01:59:37 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.48 via Frontend Transport; Fri, 11 Aug 2023 01:59:37 -0700 Received: from hyd1588t430.caveonetworks.com (unknown [10.29.52.204]) by maili.marvell.com (Postfix) with ESMTP id 09C493F706F; Fri, 11 Aug 2023 01:59:34 -0700 (PDT) From: Nithin Dabilpuram To: Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao CC: , , Akhil Goyal Subject: [PATCH 29/31] net/cnxk: check returned value for null Date: Fri, 11 Aug 2023 14:28:03 +0530 Message-ID: <20230811085805.441256-29-ndabilpuram@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230811085805.441256-1-ndabilpuram@marvell.com> References: <20230811085805.441256-1-ndabilpuram@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: MNNgrMRzwvDioj4bkKjaLltCyZaDz_kj X-Proofpoint-GUID: MNNgrMRzwvDioj4bkKjaLltCyZaDz_kj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-08-10_20,2023-08-10_01,2023-05-22_02 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Akhil Goyal nix_mtr_find may return NULL in case mtr is not found. Hence checking the return value before using it. Signed-off-by: Akhil Goyal --- drivers/net/cnxk/cnxk_ethdev_mtr.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/cnxk/cnxk_ethdev_mtr.c b/drivers/net/cnxk/cnxk_ethdev_mtr.c index 27a6e4ef3d..edeca6dcc3 100644 --- a/drivers/net/cnxk/cnxk_ethdev_mtr.c +++ b/drivers/net/cnxk/cnxk_ethdev_mtr.c @@ -613,6 +613,11 @@ cnxk_nix_mtr_destroy(struct rte_eth_dev *eth_dev, uint32_t mtr_id, while ((mtr->prev_cnt) + 1) { mid_mtr = nix_mtr_find(dev, mtr->prev_id[mtr->prev_cnt]); + if (mid_mtr == NULL) { + return -rte_mtr_error_set(error, ENOENT, + RTE_MTR_ERROR_TYPE_MTR_ID, &mtr->prev_id[mtr->prev_cnt], + "Mid meter id is invalid."); + } rc = roc_nix_bpf_connect(nix, ROC_NIX_BPF_LEVEL_F_LEAF, mid_mtr->bpf_id, ROC_NIX_BPF_ID_INVALID); @@ -628,6 +633,11 @@ cnxk_nix_mtr_destroy(struct rte_eth_dev *eth_dev, uint32_t mtr_id, while (mtr->prev_cnt) { top_mtr = nix_mtr_find(dev, mtr->prev_id[mtr->prev_cnt]); + if (top_mtr == NULL) { + return -rte_mtr_error_set(error, ENOENT, + RTE_MTR_ERROR_TYPE_MTR_ID, &mtr->prev_id[mtr->prev_cnt], + "Top meter id is invalid."); + } rc = roc_nix_bpf_connect(nix, ROC_NIX_BPF_LEVEL_F_MID, top_mtr->bpf_id, ROC_NIX_BPF_ID_INVALID); @@ -1590,6 +1600,8 @@ nix_mtr_color_action_validate(struct rte_eth_dev *eth_dev, uint32_t id, switch (*tree_level) { case 0: mtr = nix_get_mtr(eth_dev, cur_mtr_id); + if (mtr == NULL) + return -EINVAL; if (mtr->level == ROC_NIX_BPF_LEVEL_IDX_INVALID) { nix_mtr_level_update(eth_dev, cur_mtr_id, 0); nix_mtr_chain_update(eth_dev, cur_mtr_id, -1, @@ -1605,6 +1617,8 @@ nix_mtr_color_action_validate(struct rte_eth_dev *eth_dev, uint32_t id, break; case 1: mtr = nix_get_mtr(eth_dev, cur_mtr_id); + if (mtr == NULL) + return -EINVAL; if (mtr->level == ROC_NIX_BPF_LEVEL_IDX_INVALID) { nix_mtr_level_update(eth_dev, cur_mtr_id, 1); prev_mtr_id = id; @@ -1635,6 +1649,8 @@ nix_mtr_color_action_validate(struct rte_eth_dev *eth_dev, uint32_t id, switch (*tree_level) { case 0: mtr = nix_get_mtr(eth_dev, cur_mtr_id); + if (mtr == NULL) + return -EINVAL; if (mtr->level == ROC_NIX_BPF_LEVEL_IDX_INVALID) { nix_mtr_level_update(eth_dev, cur_mtr_id, 0); } else { @@ -1646,6 +1662,8 @@ nix_mtr_color_action_validate(struct rte_eth_dev *eth_dev, uint32_t id, break; case 1: mtr = nix_get_mtr(eth_dev, cur_mtr_id); + if (mtr == NULL) + return -EINVAL; if (mtr->level == ROC_NIX_BPF_LEVEL_IDX_INVALID) { nix_mtr_level_update(eth_dev, cur_mtr_id, 1); prev_mtr_id = id; @@ -1666,6 +1684,8 @@ nix_mtr_color_action_validate(struct rte_eth_dev *eth_dev, uint32_t id, break; case 2: mtr = nix_get_mtr(eth_dev, cur_mtr_id); + if (mtr == NULL) + return -EINVAL; if (mtr->level == ROC_NIX_BPF_LEVEL_IDX_INVALID) { nix_mtr_level_update(eth_dev, cur_mtr_id, 2); prev_mtr_id = *prev_id;