All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] bond: static analysis issues fix
@ 2014-12-12 17:39 Declan Doherty
       [not found] ` <1418405982-21407-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Declan Doherty @ 2014-12-12 17:39 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

Fixes for link bonding library identified by static analysis tool

- Overflow check for active_slaves array in activate_slave function
- Allocation check of pci_id_table in rte_eth_bond_create
- Use of eth_dev pointer in mac_address_get/set before NULL check

Signed-off-by: Declan Doherty <declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 lib/librte_pmd_bond/rte_eth_bond_api.c | 12 ++++++++----
 lib/librte_pmd_bond/rte_eth_bond_pmd.c |  8 ++++----
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/lib/librte_pmd_bond/rte_eth_bond_api.c b/lib/librte_pmd_bond/rte_eth_bond_api.c
index ef5ddf4..9cb1c1f 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_api.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_api.c
@@ -115,8 +115,11 @@ activate_slave(struct rte_eth_dev *eth_dev, uint8_t port_id)
 	if (internals->mode == BONDING_MODE_8023AD)
 		bond_mode_8023ad_activate_slave(eth_dev, port_id);
 
-	internals->active_slaves[internals->active_slave_count] = port_id;
-	internals->active_slave_count++;
+	if (internals->active_slave_count <
+			RTE_DIM(internals->active_slaves) - 1) {
+		internals->active_slaves[internals->active_slave_count] = port_id;
+		internals->active_slave_count++;
+	}
 }
 
 void
@@ -144,7 +147,8 @@ deactivate_slave(struct rte_eth_dev *eth_dev, uint8_t port_id)
 					sizeof(internals->active_slaves[0]));
 	}
 
-	internals->active_slave_count = active_count;
+	internals->active_slave_count = active_count < RTE_MAX_ETHPORTS ?
+			active_count : RTE_MAX_ETHPORTS - 1;
 
 	if (eth_dev->data->dev_started && internals->mode == BONDING_MODE_8023AD)
 		bond_mode_8023ad_start(eth_dev);
@@ -210,7 +214,7 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 		goto err;
 	}
 	pci_id_table = rte_zmalloc_socket(name, sizeof(*pci_id_table), 0, socket_id);
-	if (pci_drv == NULL) {
+	if (pci_id_table == NULL) {
 		RTE_BOND_LOG(ERR, "Unable to malloc pci_id_table on socket");
 		goto err;
 	}
diff --git a/lib/librte_pmd_bond/rte_eth_bond_pmd.c b/lib/librte_pmd_bond/rte_eth_bond_pmd.c
index 3db473b..bb4a537 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_pmd.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_pmd.c
@@ -764,8 +764,6 @@ mac_address_get(struct rte_eth_dev *eth_dev, struct ether_addr *dst_mac_addr)
 {
 	struct ether_addr *mac_addr;
 
-	mac_addr = eth_dev->data->mac_addrs;
-
 	if (eth_dev == NULL) {
 		RTE_LOG(ERR, PMD, "%s: NULL pointer eth_dev specified\n", __func__);
 		return -1;
@@ -776,6 +774,8 @@ mac_address_get(struct rte_eth_dev *eth_dev, struct ether_addr *dst_mac_addr)
 		return -1;
 	}
 
+	mac_addr = eth_dev->data->mac_addrs;
+
 	ether_addr_copy(mac_addr, dst_mac_addr);
 	return 0;
 }
@@ -785,8 +785,6 @@ mac_address_set(struct rte_eth_dev *eth_dev, struct ether_addr *new_mac_addr)
 {
 	struct ether_addr *mac_addr;
 
-	mac_addr = eth_dev->data->mac_addrs;
-
 	if (eth_dev == NULL) {
 		RTE_BOND_LOG(ERR, "NULL pointer eth_dev specified");
 		return -1;
@@ -797,6 +795,8 @@ mac_address_set(struct rte_eth_dev *eth_dev, struct ether_addr *new_mac_addr)
 		return -1;
 	}
 
+	mac_addr = eth_dev->data->mac_addrs;
+
 	/* If new MAC is different to current MAC then update */
 	if (memcmp(mac_addr, new_mac_addr, sizeof(*mac_addr)) != 0)
 		memcpy(mac_addr, new_mac_addr, sizeof(*mac_addr));
-- 
1.7.12.2

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-12-17 23:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-12 17:39 [PATCH] bond: static analysis issues fix Declan Doherty
     [not found] ` <1418405982-21407-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-12 18:30   ` Wodkowski, PawelX
2014-12-15 17:13   ` [PATCH v2] " Declan Doherty
     [not found]     ` <1418663630-27409-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-16  8:50       ` Wodkowski, PawelX
2014-12-16 17:31       ` Thomas Monjalon
2014-12-17 11:46       ` [PATCH v3 0/3] " Declan Doherty
     [not found]         ` <1418816819-13517-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-17 11:46           ` [PATCH v3 1/3] bond: add bounds check before assigning active slave count value Declan Doherty
     [not found]             ` <1418816819-13517-2-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-17 11:46               ` [PATCH v3 2/3] bond: fix pci_id_table allocation check in rte_eth_bond_create Declan Doherty
     [not found]                 ` <1418816819-13517-3-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-17 11:46                   ` [PATCH v3 3/3] bond: eth_dev parameter used before NULL check in mac_address_get/set Declan Doherty
2014-12-17 23:43           ` [PATCH v3 0/3] bond: static analysis issues fix Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.