[v2,17/26] net/ntnic: enhance null checks and assertions

Message ID 20250505071309.586015-18-okl-plv@napatech.com (mailing list archive)
State Awaiting Upstream
Delegated to: Stephen Hemminger
Headers
Series net/ntnic: fixes and improvements |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/aws-unit-testing success Unit Testing PASS

Commit Message

Oleksandr Kolomeiets May 5, 2025, 7:12 a.m. UTC
From: Danylo Vodopianov <dvo-plv@napatech.com>

Avoid usage before check

Signed-off-by: Danylo Vodopianov <dvo-plv@napatech.com>
---
 drivers/net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c     |  4 ++--
 drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c         |  4 ++--
 .../net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c   |  2 +-
 .../link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c     |  3 ++-
 .../nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c |  4 ++--
 drivers/net/ntnic/nthw/core/nthw_fpga.c               |  3 +--
 drivers/net/ntnic/ntnic_ethdev.c                      |  5 +++++
 drivers/net/ntnic/ntnic_filter/ntnic_filter.c         | 11 ++++++-----
 8 files changed, 21 insertions(+), 15 deletions(-)
  

Patch

diff --git a/drivers/net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c b/drivers/net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c
index 0ea40fdf42..ff83ba69f7 100644
--- a/drivers/net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c
+++ b/drivers/net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c
@@ -246,7 +246,7 @@  static int nt4ga_stat_collect_cap_v1_stats(struct adapter_info_s *p_adapter_info
 	(void)p_adapter_info;
 	const struct flow_filter_ops *flow_filter_ops = get_flow_filter_ops();
 
-	if (flow_filter_ops == NULL)
+	if (flow_filter_ops == NULL || p_nt4ga_stat == NULL)
 		return -1;
 
 	nthw_stat_t *p_nthw_stat = p_nt4ga_stat->mp_nthw_stat;
@@ -256,7 +256,7 @@  static int nt4ga_stat_collect_cap_v1_stats(struct adapter_info_s *p_adapter_info
 	const int n_tx_ports = p_nt4ga_stat->mn_tx_ports;
 	int c, h, p;
 
-	if (!p_nthw_stat || !p_nt4ga_stat)
+	if (p_nthw_stat == NULL)
 		return -1;
 
 	if (p_nthw_stat->mn_stat_layout_version < 6) {
diff --git a/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c b/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
index c9a0580391..bb775c052c 100644
--- a/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
+++ b/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
@@ -592,11 +592,11 @@  static int nthw_release_mngd_rx_virt_queue(struct nthw_virt_queue *rxvq)
 
 static int dbs_internal_release_tx_virt_queue(struct nthw_virt_queue *txvq)
 {
-	nthw_dbs_t *p_nthw_dbs = txvq->mp_nthw_dbs;
-
 	if (txvq == NULL)
 		return -1;
 
+	nthw_dbs_t *p_nthw_dbs = txvq->mp_nthw_dbs;
+
 	/* Clear UW */
 	txvq->used_struct_phys_addr = NULL;
 
diff --git a/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c b/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c
index 43b3c5a41f..ed9dabe27c 100644
--- a/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c
+++ b/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c
@@ -256,11 +256,11 @@  static int _create_nim(adapter_info_t *drv, int port, bool enable)
 	nim_i2c_ctx_t *nim_ctx;
 	sfp_nim_state_t nim;
 	nt4ga_link_t *link_info = &drv->nt4ga_link;
-	nthw_mac_pcs_t *mac_pcs = &link_info->u.var100g.mac_pcs100g[port];
 
 	RTE_ASSERT(port >= 0 && port < NUM_ADAPTER_PORTS_MAX);
 	RTE_ASSERT(link_info->variables_initialized);
 
+	nthw_mac_pcs_t *mac_pcs = &link_info->u.var100g.mac_pcs100g[port];
 	gpio_phy = &link_info->u.var100g.gpio_phy[port];
 	nim_ctx = &link_info->u.var100g.nim_ctx[port];
 
diff --git a/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c b/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c
index 4f6be900fd..64db55f6e9 100644
--- a/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c
+++ b/drivers/net/ntnic/link_mgmt/link_agx_100g/nt4ga_agx_link_100g.c
@@ -519,11 +519,12 @@  static int create_nim(adapter_info_t *drv, int port, bool enable)
 	const uint8_t valid_nim_id = NT_NIM_QSFP28;
 	sfp_nim_state_t nim;
 	nt4ga_link_t *link_info = &drv->nt4ga_link;
-	nim_i2c_ctx_t *nim_ctx = &link_info->u.nim_ctx[port];
 
 	RTE_ASSERT(port >= 0 && port < NUM_ADAPTER_PORTS_MAX);
 	RTE_ASSERT(link_info->variables_initialized);
 
+	nim_i2c_ctx_t *nim_ctx = &link_info->u.nim_ctx[port];
+
 	if (!enable) {
 		phy_reset_rx(drv, port);
 		phy_reset_tx(drv, port);
diff --git a/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c b/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c
index 237c19bb95..d9c4281eeb 100644
--- a/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c
+++ b/drivers/net/ntnic/nthw/core/nt400dxx/reset/nthw_fpga_rst_nt400dxx.c
@@ -182,6 +182,8 @@  static int nthw_fpga_rst_nt400dxx_init(struct fpga_info_s *p_fpga_info)
 
 static int nthw_fpga_rst_nt400dxx_reset(struct fpga_info_s *p_fpga_info)
 {
+	RTE_ASSERT(p_fpga_info);
+
 	const char *const p_adapter_id_str = p_fpga_info->mp_adapter_id_str;
 	nthw_fpga_t *p_fpga = NULL;
 	int res = -1;
@@ -191,8 +193,6 @@  static int nthw_fpga_rst_nt400dxx_reset(struct fpga_info_s *p_fpga_info)
 	nthw_pcm_nt400dxx_t *p_pcm = p_fpga_info->mp_nthw_agx.p_pcm;
 	nthw_prm_nt400dxx_t *p_prm = p_fpga_info->mp_nthw_agx.p_prm;
 
-	RTE_ASSERT(p_fpga_info);
-
 	NT_LOG(DBG, NTHW, "%s: %s: BEGIN", p_adapter_id_str, __PRETTY_FUNCTION__);
 
 	/* Create Phy Tile module */
diff --git a/drivers/net/ntnic/nthw/core/nthw_fpga.c b/drivers/net/ntnic/nthw/core/nthw_fpga.c
index 47f4b4e7b1..b74a1607fd 100644
--- a/drivers/net/ntnic/nthw/core/nthw_fpga.c
+++ b/drivers/net/ntnic/nthw/core/nthw_fpga.c
@@ -343,6 +343,7 @@  int nthw_fpga_si5340_clock_synth_init_fmt2(nthw_fpga_t *p_fpga, const uint8_t n_
 
 int nthw_fpga_init(struct fpga_info_s *p_fpga_info)
 {
+	RTE_ASSERT(p_fpga_info);
 	const char *const p_adapter_id_str = p_fpga_info->mp_adapter_id_str;
 
 	nthw_hif_t *p_nthw_hif = NULL;
@@ -359,8 +360,6 @@  int nthw_fpga_init(struct fpga_info_s *p_fpga_info)
 
 	int res = 0;
 
-	RTE_ASSERT(p_fpga_info);
-
 	{
 		const uint64_t n_fpga_ident = nthw_fpga_read_ident(p_fpga_info);
 		const uint32_t n_fpga_build_time = nthw_fpga_read_buildtime(p_fpga_info);
diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c
index 920abd0221..d9088db4c0 100644
--- a/drivers/net/ntnic/ntnic_ethdev.c
+++ b/drivers/net/ntnic/ntnic_ethdev.c
@@ -332,6 +332,11 @@  eth_dev_infos_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *dev_info
 
 	struct pmd_internals *internals = eth_dev->data->dev_private;
 
+	if (internals == NULL) {
+		NT_LOG(ERR, NTNIC, "PMD-specific private data not initialized");
+		return -1;
+	}
+
 	const int n_intf_no = internals->n_intf_no;
 	struct adapter_info_s *p_adapter_info = &internals->p_drv->ntdrv.adapter_info;
 
diff --git a/drivers/net/ntnic/ntnic_filter/ntnic_filter.c b/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
index 551979cf0f..5757c7c13c 100644
--- a/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
+++ b/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
@@ -478,11 +478,6 @@  static int convert_flow(struct rte_eth_dev *eth_dev,
 	struct rte_flow_error *error)
 {
 	struct pmd_internals *internals = eth_dev->data->dev_private;
-	struct fpga_info_s *fpga_info = &internals->p_drv->ntdrv.adapter_info.fpga_info;
-
-	error->type = RTE_FLOW_ERROR_TYPE_NONE;
-	error->message = "none";
-	uint32_t queue_offset = 0;
 
 	if (!internals) {
 		rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
@@ -490,6 +485,12 @@  static int convert_flow(struct rte_eth_dev *eth_dev,
 		return -1;
 	}
 
+	struct fpga_info_s *fpga_info = &internals->p_drv->ntdrv.adapter_info.fpga_info;
+
+	error->type = RTE_FLOW_ERROR_TYPE_NONE;
+	error->message = "none";
+	uint32_t queue_offset = 0;
+
 	if (internals->type == PORT_TYPE_OVERRIDE && internals->vpq_nb_vq > 0) {
 		/*
 		 * The queues coming from the main PMD will always start from 0