[PATCH] common/mlx5: fix probing return value when failing

Bing Zhao bingz at nvidia.com
Mon Jan 17 18:49:14 CET 2022


While probing the device with unsupported class, the process should
fail because no appropriate driver was found. After traversing all
the drivers, an error value should be returned for the case.

In the previous implementation, zero value indicating probing success
was wrongly returned.

Fixes: ad435d320473 ("common/mlx5: add bus-agnostic layer")
Cc: xuemingl at nvidia.com
Cc: stable at dpdk.org

Signed-off-by: Bing Zhao <bingz at nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo at nvidia.com>
---
 drivers/common/mlx5/mlx5_common.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/common/mlx5/mlx5_common.c b/drivers/common/mlx5/mlx5_common.c
index 185db4d004..47a541f5ef 100644
--- a/drivers/common/mlx5/mlx5_common.c
+++ b/drivers/common/mlx5/mlx5_common.c
@@ -644,7 +644,7 @@ drivers_probe(struct mlx5_common_device *cdev, uint32_t user_classes)
 	struct mlx5_class_driver *driver;
 	uint32_t enabled_classes = 0;
 	bool already_loaded;
-	int ret;
+	int ret = -EINVAL;
 
 	TAILQ_FOREACH(driver, &drivers_list, next) {
 		if ((driver->drv_class & user_classes) == 0)
@@ -666,8 +666,10 @@ drivers_probe(struct mlx5_common_device *cdev, uint32_t user_classes)
 		}
 		enabled_classes |= driver->drv_class;
 	}
-	cdev->classes_loaded |= enabled_classes;
-	return 0;
+	if (!ret) {
+		cdev->classes_loaded |= enabled_classes;
+		return 0;
+	}
 probe_err:
 	/*
 	 * Need to remove only drivers which were not probed before this probe
-- 
2.27.0



More information about the stable mailing list