[dpdk-stable] patch 'net/bonding: fix port ID check' has been queued to LTS release 17.11.10

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Dec 19 15:34:16 CET 2019


Hi,

FYI, your patch has been queued to LTS release 17.11.10

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/21/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
>From 281bcf2c7ea315d0d6ecf06d555f4b6c0c860766 Mon Sep 17 00:00:00 2001
From: Junyu Jiang <junyux.jiang at intel.com>
Date: Tue, 29 Oct 2019 02:23:41 +0000
Subject: [PATCH] net/bonding: fix port ID check

[ upstream commit 588ae95e79834495f78192fc6bb3ae14c152439f ]

Port validation should be prior to getting device data
to avoid segment fault. This patch fixed the segment fault
caused by invalid port using.

Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")
Fixes: 112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")

Signed-off-by: Junyu Jiang <junyux.jiang at intel.com>
Acked-by: Chas Williams <chas3 at att.com>
---
 drivers/net/bonding/rte_eth_bond_8023ad.c | 36 +++++++++++++++--------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
index faaaddec69..4b98730bd7 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -1321,11 +1321,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
 	struct bond_dev_private *internals;
 	struct mode8023ad_private *mode4;
 
-	bond_dev = &rte_eth_devices[port_id];
-	internals = bond_dev->data->dev_private;
-
 	if (valid_bonded_port_id(port_id) != 0)
 		return -EINVAL;
+
+	bond_dev = &rte_eth_devices[port_id];
+	internals = bond_dev->data->dev_private;
+
 	if (internals->mode != 4)
 		return -EINVAL;
 
@@ -1342,11 +1343,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
 	struct bond_dev_private *internals;
 	struct mode8023ad_private *mode4;
 
-	bond_dev = &rte_eth_devices[port_id];
-	internals = bond_dev->data->dev_private;
-
 	if (valid_bonded_port_id(port_id) != 0)
 		return -EINVAL;
+
+	bond_dev = &rte_eth_devices[port_id];
+	internals = bond_dev->data->dev_private;
+
 	if (internals->mode != 4)
 		return -EINVAL;
 	mode4 = &internals->mode4;
@@ -1599,9 +1601,14 @@ int
 rte_eth_bond_8023ad_dedicated_queues_enable(uint16_t port)
 {
 	int retval = 0;
-	struct rte_eth_dev *dev = &rte_eth_devices[port];
-	struct bond_dev_private *internals = (struct bond_dev_private *)
-		dev->data->dev_private;
+	struct rte_eth_dev *dev;
+	struct bond_dev_private *internals;
+
+	if (valid_bonded_port_id(port) != 0)
+		return -EINVAL;
+
+	dev = &rte_eth_devices[port];
+	internals = dev->data->dev_private;
 
 	if (check_for_bonded_ethdev(dev) != 0)
 		return -1;
@@ -1623,9 +1630,14 @@ int
 rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port)
 {
 	int retval = 0;
-	struct rte_eth_dev *dev = &rte_eth_devices[port];
-	struct bond_dev_private *internals = (struct bond_dev_private *)
-		dev->data->dev_private;
+	struct rte_eth_dev *dev;
+	struct bond_dev_private *internals;
+
+	if (valid_bonded_port_id(port) != 0)
+		return -EINVAL;
+
+	dev = &rte_eth_devices[port];
+	internals = dev->data->dev_private;
 
 	if (check_for_bonded_ethdev(dev) != 0)
 		return -1;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.651954122 +0000
+++ 0109-net-bonding-fix-port-ID-check.patch	2019-12-19 14:32:26.257300840 +0000
@@ -1,15 +1,16 @@
-From 588ae95e79834495f78192fc6bb3ae14c152439f Mon Sep 17 00:00:00 2001
+From 281bcf2c7ea315d0d6ecf06d555f4b6c0c860766 Mon Sep 17 00:00:00 2001
 From: Junyu Jiang <junyux.jiang at intel.com>
 Date: Tue, 29 Oct 2019 02:23:41 +0000
 Subject: [PATCH] net/bonding: fix port ID check
 
+[ upstream commit 588ae95e79834495f78192fc6bb3ae14c152439f ]
+
 Port validation should be prior to getting device data
 to avoid segment fault. This patch fixed the segment fault
 caused by invalid port using.
 
 Fixes: 6d72657ce379 ("net/bonding: add other aggregator modes")
 Fixes: 112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")
-Cc: stable at dpdk.org
 
 Signed-off-by: Junyu Jiang <junyux.jiang at intel.com>
 Acked-by: Chas Williams <chas3 at att.com>
@@ -18,10 +19,10 @@
  1 file changed, 24 insertions(+), 12 deletions(-)
 
 diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c
-index badcd109ae..05b3004c4c 100644
+index faaaddec69..4b98730bd7 100644
 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
 +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
-@@ -1387,11 +1387,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
+@@ -1321,11 +1321,12 @@ rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
  	struct bond_dev_private *internals;
  	struct mode8023ad_private *mode4;
  
@@ -37,7 +38,7 @@
  	if (internals->mode != 4)
  		return -EINVAL;
  
-@@ -1408,11 +1409,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
+@@ -1342,11 +1343,12 @@ int rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id)
  	struct bond_dev_private *internals;
  	struct mode8023ad_private *mode4;
  
@@ -53,7 +54,7 @@
  	if (internals->mode != 4)
  		return -EINVAL;
  	mode4 = &internals->mode4;
-@@ -1665,9 +1667,14 @@ int
+@@ -1599,9 +1601,14 @@ int
  rte_eth_bond_8023ad_dedicated_queues_enable(uint16_t port)
  {
  	int retval = 0;
@@ -71,7 +72,7 @@
  
  	if (check_for_bonded_ethdev(dev) != 0)
  		return -1;
-@@ -1689,9 +1696,14 @@ int
+@@ -1623,9 +1630,14 @@ int
  rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port)
  {
  	int retval = 0;


More information about the stable mailing list