If start is set and a device before it matches the data, this device is returned.
Fixes: c7fe1eea8a74 ("bus: simplify finding starting point") Cc: sta...@dpdk.org Cc: Hemant Agrawal <hemant.agra...@nxp.com> Cc: Shreyansh Jain <shreyansh.j...@nxp.com> Signed-off-by: Gaetan Rivet <gaetan.ri...@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