From: Oleksandr Kolomeiets <okl-plv@napatech.com>
To: dev@dpdk.org
Cc: mko-plv@napatech.com, sil-plv@napatech.com, ckm@napatech.com,
stephen@networkplumber.org, thomas@monjalon.net,
Danylo Vodopianov <dvo-plv@napatech.com>
Subject: [PATCH v1 16/25] net/ntnic: enhance null checks and assertions
Date: Wed, 30 Apr 2025 15:48:28 +0200 [thread overview]
Message-ID: <20250430134840.402553-17-okl-plv@napatech.com> (raw)
In-Reply-To: <20250430134840.402553-1-okl-plv@napatech.com>
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(-)
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 e3ed22b89b..a8ea7ee140 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
--
2.47.1
next prev parent reply other threads:[~2025-04-30 13:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-30 13:48 [PATCH v1 00/25] net/ntnic: fixes and improvements Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 01/25] net/ntnic: remove usage of the variable-length arrays Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 02/25] net/ntnic: handle string truncations when using strlcpy Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 03/25] net/ntnic: replace pragma pack with DPDK defined macros Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 04/25] net/ntnic: remove extra memset Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 05/25] net/ntnic: include all queues into statistics Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 06/25] net/ntnic: avoid misleading variable names Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 07/25] net/ntnic: apply packing to the structure Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 08/25] net/ntnic: improve logging format specifiers Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 09/25] net/ntnic: remove usless expressions Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 10/25] net/ntnic: remove unused code Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 11/25] net/ntnic: remove usless part of conditional expression Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 12/25] net/ntnic: add error logging for hsh Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 13/25] net/ntnic: add explicitly specificator Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 14/25] net/ntnic: add handle memory allocation failures Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 15/25] net/ntnic: remove redundant initialization Oleksandr Kolomeiets
2025-04-30 13:48 ` Oleksandr Kolomeiets [this message]
2025-04-30 13:48 ` [PATCH v1 17/25] net/ntnic: add return value check Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 18/25] net/ntnic: remove redundant assignments and branching Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 19/25] net/ntnic: rework array usage Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 20/25] net/ntnic: avoid divide by zero Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 21/25] net/ntnic: remove unnecessary void cast Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 22/25] net/ntnic: remove unnecessary memset Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 23/25] net/ntnic: add null verification Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 24/25] net/ntnic: avoid possible deadlock Oleksandr Kolomeiets
2025-04-30 14:05 ` Stephen Hemminger
2025-04-30 13:48 ` [PATCH v1 25/25] net/ntnic: fix operation with rte ring queue Oleksandr Kolomeiets
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250430134840.402553-17-okl-plv@napatech.com \
--to=okl-plv@napatech.com \
--cc=ckm@napatech.com \
--cc=dev@dpdk.org \
--cc=dvo-plv@napatech.com \
--cc=mko-plv@napatech.com \
--cc=sil-plv@napatech.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).