From 14f7e5d4bf2d2c90c715b7d1cf1a973829289499 Mon Sep 17 00:00:00 2001 From: Gowrishankar Muthukrishnan Date: Sat, 12 Feb 2022 18:08:18 +0530 Subject: [PATCH] common/cnxk: add missing checks of return values This patch fixes coverity issue by adding checks on return values. Coverity issue: 373628, 374858, 370213, 370215 Fixes: af75aac78978 ("common/cnxk: support telemetry for NIX") Fixes: d61138d4f0e2 ("drivers: remove direct access to interrupt handle") Fixes: fcdef46b6698 ("common/cnxk: support NIX TM debug and misc utils") Fixes: df405df95eeb ("common/cnxk: add NIX TM helper to alloc/free resource") Cc: stable@dpdk.org Signed-off-by: Gowrishankar Muthukrishnan Acked-by: Jerin Jacob --- drivers/common/cnxk/cnxk_telemetry_nix.c | 3 +++ drivers/common/cnxk/roc_irq.c | 5 ++++- drivers/common/cnxk/roc_nix_debug.c | 4 +++- drivers/common/cnxk/roc_nix_tm.c | 6 ++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/common/cnxk/cnxk_telemetry_nix.c b/drivers/common/cnxk/cnxk_telemetry_nix.c index df6458039d..4119e9ee4f 100644 --- a/drivers/common/cnxk/cnxk_telemetry_nix.c +++ b/drivers/common/cnxk/cnxk_telemetry_nix.c @@ -765,6 +765,9 @@ cnxk_nix_tel_handle_info_x(const char *cmd, const char *params, plt_strlcpy(buf, params, PCI_PRI_STR_SIZE + 1); name = strtok(buf, ","); + if (name == NULL) + goto exit; + param = strtok(NULL, "\0"); node = nix_tel_node_get_by_pcidev_name(name); diff --git a/drivers/common/cnxk/roc_irq.c b/drivers/common/cnxk/roc_irq.c index 7a24297d72..010b121176 100644 --- a/drivers/common/cnxk/roc_irq.c +++ b/drivers/common/cnxk/roc_irq.c @@ -160,7 +160,10 @@ dev_irq_register(struct plt_intr_handle *intr_handle, plt_intr_callback_fn cb, return rc; } - plt_intr_efds_index_set(intr_handle, vec, fd); + rc = plt_intr_efds_index_set(intr_handle, vec, fd); + if (rc) + return rc; + nb_efd = (vec > (uint32_t)plt_intr_nb_efd_get(intr_handle)) ? vec : (uint32_t)plt_intr_nb_efd_get(intr_handle); plt_intr_nb_efd_set(intr_handle, nb_efd); diff --git a/drivers/common/cnxk/roc_nix_debug.c b/drivers/common/cnxk/roc_nix_debug.c index d5143882f5..1ae045172e 100644 --- a/drivers/common/cnxk/roc_nix_debug.c +++ b/drivers/common/cnxk/roc_nix_debug.c @@ -52,7 +52,9 @@ nix_bitmap_dump(struct plt_bitmap *bmp) int i; plt_bitmap_scan_init(bmp); - plt_bitmap_scan(bmp, &pos, &slab); + if (!plt_bitmap_scan(bmp, &pos, &slab)) + return; + start_pos = pos; nix_dump_no_nl(" \t\t["); diff --git a/drivers/common/cnxk/roc_nix_tm.c b/drivers/common/cnxk/roc_nix_tm.c index a0448bec61..517502b1af 100644 --- a/drivers/common/cnxk/roc_nix_tm.c +++ b/drivers/common/cnxk/roc_nix_tm.c @@ -1016,8 +1016,10 @@ nix_tm_assign_hw_id(struct nix *nix, struct nix_tm_node *parent, return -EFAULT; } - if (!slab) - plt_bitmap_scan(bmp, &pos, &slab); + if (!slab) { + if (!plt_bitmap_scan(bmp, &pos, &slab)) + return -ENOENT; + } if (child->priority == parent->rr_prio && spare_schq != -1) { /* Use spare schq first if present */ -- 2.20.1