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

* Re: [PATCH] bond: static analysis issues fix
       [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
  1 sibling, 0 replies; 10+ messages in thread
From: Wodkowski, PawelX @ 2014-12-12 18:30 UTC (permalink / raw)
  To: Doherty, Declan, dev-VfR2kkLFssw@public.gmane.org



> -----Original Message-----
> From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Declan Doherty
> Sent: Friday, December 12, 2014 6:40 PM
> To: dev-VfR2kkLFssw@public.gmane.org
> Subject: [dpdk-dev] [PATCH] bond: static analysis issues fix
> 
> 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;

Since port might not be added twice and active_slaves array is (should be)
 proper size to contain every port you can add to bonding and in fact is
one element bigger and active_slave_count should newer overflow, those
changes might only mask real problems in user application and/or library itself.
I think if you want to make this static analysis tool happy it should be changed
to RTE_VERIFY(), assert(), rte_panic() or something like that to indicate
undefined state.

Pawel

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

* [PATCH v2] bond: static analysis issues fix
       [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   ` Declan Doherty
       [not found]     ` <1418663630-27409-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  1 sibling, 1 reply; 10+ messages in thread
From: Declan Doherty @ 2014-12-15 17:13 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

-v2:
Incorporates Pawel's comments regarding assertion's check on activate_slave array indexing

Fixes for link bonding library identified by static analysis tool

- Overflow assert 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 | 7 ++++++-
 lib/librte_pmd_bond/rte_eth_bond_pmd.c | 8 ++++----
 2 files changed, 10 insertions(+), 5 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..87a6a23 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_api.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_api.c
@@ -115,8 +115,12 @@ 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);
 
+	RTE_VERIFY(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,6 +148,7 @@ deactivate_slave(struct rte_eth_dev *eth_dev, uint8_t port_id)
 					sizeof(internals->active_slaves[0]));
 	}
 
+	RTE_VERIFY(active_count < RTE_DIM(internals->active_slaves));
 	internals->active_slave_count = active_count;
 
 	if (eth_dev->data->dev_started && internals->mode == BONDING_MODE_8023AD)
@@ -210,7 +215,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

* Re: [PATCH v2] bond: static analysis issues fix
       [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
  2 siblings, 0 replies; 10+ messages in thread
From: Wodkowski, PawelX @ 2014-12-16  8:50 UTC (permalink / raw)
  To: Doherty, Declan, dev-VfR2kkLFssw@public.gmane.org

> -----Original Message-----
> From: Doherty, Declan
> Sent: Monday, December 15, 2014 6:14 PM
> To: dev-VfR2kkLFssw@public.gmane.org
> Cc: Wodkowski, PawelX; Doherty, Declan
> Subject: [PATCH v2] bond: static analysis issues fix
> 
> -v2:
> Incorporates Pawel's comments regarding assertion's check on activate_slave
> array indexing
> 
> Fixes for link bonding library identified by static analysis tool
> 
> - Overflow assert 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>
> ---
> 

Acked-by: Wodkowski, Pawel <pawelx.wodkowski-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

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

* Re: [PATCH v2] bond: static analysis issues fix
       [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
  2 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2014-12-16 17:31 UTC (permalink / raw)
  To: Declan Doherty; +Cc: dev-VfR2kkLFssw

2014-12-15 17:13, Declan Doherty:
> -v2:
> Incorporates Pawel's comments regarding assertion's check on activate_slave array indexing

Changelog should be below three dashes to be excluded from git history.

> Fixes for link bonding library identified by static analysis tool
> 
> - Overflow assert 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

Please send 3 patches. 1 bug = 1 fix with its explanation.
The main advantage is to help referencing regressions.

> Signed-off-by: Declan Doherty <declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
[...]
> --- a/lib/librte_pmd_bond/rte_eth_bond_api.c
> +++ b/lib/librte_pmd_bond/rte_eth_bond_api.c
> @@ -115,8 +115,12 @@ 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);
>  
> +	RTE_VERIFY(internals->active_slave_count <
> +			(RTE_DIM(internals->active_slaves) - 1));
> +
>  	internals->active_slaves[internals->active_slave_count] = port_id;
>  	internals->active_slave_count++;
> +
>  }

Why a blank line here?

-- 
Thomas

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

* [PATCH v3 0/3] bond: static analysis issues fix
       [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       ` Declan Doherty
       [not found]         ` <1418816819-13517-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  2 siblings, 1 reply; 10+ messages in thread
From: Declan Doherty @ 2014-12-17 11:46 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

-v3:
Split patches 

-v2:
Incorporates Pawel's comments regarding assertion's check on activate_slave array indexing

Fixes for link bonding library identified by static analysis tool

- Overflow assert 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


Declan Doherty (3):
  bond: add bounds check before assigning active slave count value
  bond: fix pci_id_table allocation check in rte_eth_bond_create
  bond: eth_dev parameter used before NULL check mac_address_get/set

 lib/librte_pmd_bond/rte_eth_bond_api.c | 6 +++++-
 lib/librte_pmd_bond/rte_eth_bond_pmd.c | 8 ++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

-- 
1.7.12.2

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

* [PATCH v3 1/3] bond: add bounds check before assigning active slave count value
       [not found]         ` <1418816819-13517-1-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2014-12-17 11:46           ` Declan Doherty
       [not found]             ` <1418816819-13517-2-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  2014-12-17 23:43           ` [PATCH v3 0/3] bond: static analysis issues fix Thomas Monjalon
  1 sibling, 1 reply; 10+ messages in thread
From: Declan Doherty @ 2014-12-17 11:46 UTC (permalink / raw)
  To: dev-VfR2kkLFssw


Signed-off-by: Declan Doherty <declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 lib/librte_pmd_bond/rte_eth_bond_api.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/librte_pmd_bond/rte_eth_bond_api.c b/lib/librte_pmd_bond/rte_eth_bond_api.c
index ef5ddf4..b124784 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_api.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_api.c
@@ -115,6 +115,9 @@ 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);
 
+	RTE_VERIFY(internals->active_slave_count <
+			(RTE_DIM(internals->active_slaves) - 1));
+
 	internals->active_slaves[internals->active_slave_count] = port_id;
 	internals->active_slave_count++;
 }
@@ -144,6 +147,7 @@ deactivate_slave(struct rte_eth_dev *eth_dev, uint8_t port_id)
 					sizeof(internals->active_slaves[0]));
 	}
 
+	RTE_VERIFY(active_count < RTE_DIM(internals->active_slaves));
 	internals->active_slave_count = active_count;
 
 	if (eth_dev->data->dev_started && internals->mode == BONDING_MODE_8023AD)
-- 
1.7.12.2

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

* [PATCH v3 2/3] bond: fix pci_id_table allocation check in rte_eth_bond_create
       [not found]             ` <1418816819-13517-2-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2014-12-17 11:46               ` Declan Doherty
       [not found]                 ` <1418816819-13517-3-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Declan Doherty @ 2014-12-17 11:46 UTC (permalink / raw)
  To: dev-VfR2kkLFssw


Signed-off-by: Declan Doherty <declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 lib/librte_pmd_bond/rte_eth_bond_api.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_pmd_bond/rte_eth_bond_api.c b/lib/librte_pmd_bond/rte_eth_bond_api.c
index b124784..c2a99a3 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_api.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_api.c
@@ -214,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;
 	}
-- 
1.7.12.2

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

* [PATCH v3 3/3] bond: eth_dev parameter used before NULL check in mac_address_get/set
       [not found]                 ` <1418816819-13517-3-git-send-email-declan.doherty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2014-12-17 11:46                   ` Declan Doherty
  0 siblings, 0 replies; 10+ messages in thread
From: Declan Doherty @ 2014-12-17 11:46 UTC (permalink / raw)
  To: dev-VfR2kkLFssw


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

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

* Re: [PATCH v3 0/3] bond: static analysis issues fix
       [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
@ 2014-12-17 23:43           ` Thomas Monjalon
  1 sibling, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2014-12-17 23:43 UTC (permalink / raw)
  To: Declan Doherty; +Cc: dev-VfR2kkLFssw

> -v3:
> Split patches 
> 
> -v2:
> Incorporates Pawel's comments regarding assertion's check on activate_slave array indexing
> 
> Fixes for link bonding library identified by static analysis tool
> 
> - Overflow assert 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
> 
> 
> Declan Doherty (3):
>   bond: add bounds check before assigning active slave count value
>   bond: fix pci_id_table allocation check in rte_eth_bond_create
>   bond: eth_dev parameter used before NULL check mac_address_get/set

Applied

Thanks
-- 
Thomas

^ permalink raw reply	[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.