[dpdk-stable] [PATCH v1] bus/fslmc: fix find device start condition

Gaetan Rivet gaetan.rivet at 6wind.com
Thu Mar 22 11:28:44 CET 2018


If start is set and a device before it matches the data,
this device is returned.

Fixes: c7fe1eea8a74 ("bus: simplify finding starting point")
Cc: stable at dpdk.org

Cc: Hemant Agrawal <hemant.agrawal at nxp.com>
Cc: Shreyansh Jain <shreyansh.jain at nxp.com>
Signed-off-by: Gaetan Rivet <gaetan.rivet at 6wind.com>
---

Hi Shreyansh, Hemant,

Sorry, I did not test this.
I found this issue while working on vdev and PCI.

There is a better way to iterate on devices [1], but the gain
is really minimal and the implementation slightly more complex.
I preferred to avoid complex, as I could not test this patch.

Regards,

[1]: http://dpdk.org/ml/archives/dev/2018-March/092906.html

 drivers/bus/fslmc/fslmc_bus.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index 5ee0beb85..010dd474e 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -301,8 +301,9 @@ rte_fslmc_find_device(const struct rte_device *start, rte_dev_cmp_t cmp,
 	struct rte_dpaa2_device *dev;
 
 	TAILQ_FOREACH(dev, &rte_fslmc_bus.device_list, next) {
-		if (start && &dev->device == start) {
-			start = NULL;  /* starting point found */
+		if (start != NULL) {
+			if (&dev->device == start)
+				start = NULL;  /* starting point found */
 			continue;
 		}
 
-- 
2.11.0



More information about the stable mailing list