Thomas Bogendoerfer 84fb0b
From: Aya Levin <ayal@nvidia.com>
Thomas Bogendoerfer 84fb0b
Date: Tue, 8 Jun 2021 16:38:30 +0300
Thomas Bogendoerfer 84fb0b
Subject: net/mlx5: Fix return value from tracer initialization
Thomas Bogendoerfer 84fb0b
Patch-mainline: v5.14-rc6
Thomas Bogendoerfer 84fb0b
Git-commit: bd37c2888ccaa5ceb9895718f6909b247cc372e0
Thomas Bogendoerfer 84fb0b
References: git-fixes
Thomas Bogendoerfer 84fb0b
Thomas Bogendoerfer 84fb0b
Check return value of mlx5_fw_tracer_start(), set error path and fix
Thomas Bogendoerfer 84fb0b
return value of mlx5_fw_tracer_init() accordingly.
Thomas Bogendoerfer 84fb0b
Thomas Bogendoerfer 84fb0b
Fixes: c71ad41ccb0c ("net/mlx5: FW tracer, events handling")
Thomas Bogendoerfer 84fb0b
Signed-off-by: Aya Levin <ayal@nvidia.com>
Thomas Bogendoerfer 84fb0b
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Thomas Bogendoerfer 84fb0b
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Thomas Bogendoerfer 84fb0b
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Thomas Bogendoerfer 84fb0b
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 84fb0b
---
Thomas Bogendoerfer 84fb0b
 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c |   11 +++++++++--
Thomas Bogendoerfer 84fb0b
 1 file changed, 9 insertions(+), 2 deletions(-)
Thomas Bogendoerfer 84fb0b
Thomas Bogendoerfer 84fb0b
--- a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
Thomas Bogendoerfer 84fb0b
+++ b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
Thomas Bogendoerfer 84fb0b
@@ -1017,12 +1017,19 @@ int mlx5_fw_tracer_init(struct mlx5_fw_t
Thomas Bogendoerfer 84fb0b
 	MLX5_NB_INIT(&tracer->nb, fw_tracer_event, DEVICE_TRACER);
Thomas Bogendoerfer 84fb0b
 	mlx5_eq_notifier_register(dev, &tracer->nb);
Thomas Bogendoerfer 84fb0b
 
Thomas Bogendoerfer 84fb0b
-	mlx5_fw_tracer_start(tracer);
Thomas Bogendoerfer 84fb0b
-
Thomas Bogendoerfer 84fb0b
+	err = mlx5_fw_tracer_start(tracer);
Thomas Bogendoerfer 84fb0b
+	if (err) {
Thomas Bogendoerfer 84fb0b
+		mlx5_core_warn(dev, "FWTracer: Failed to start tracer %d\n", err);
Thomas Bogendoerfer 84fb0b
+		goto err_notifier_unregister;
Thomas Bogendoerfer 84fb0b
+	}
Thomas Bogendoerfer 84fb0b
 	return 0;
Thomas Bogendoerfer 84fb0b
 
Thomas Bogendoerfer 84fb0b
+err_notifier_unregister:
Thomas Bogendoerfer 84fb0b
+	mlx5_eq_notifier_unregister(dev, &tracer->nb);
Thomas Bogendoerfer 84fb0b
+	mlx5_core_destroy_mkey(dev, &tracer->buff.mkey);
Thomas Bogendoerfer 84fb0b
 err_dealloc_pd:
Thomas Bogendoerfer 84fb0b
 	mlx5_core_dealloc_pd(dev, tracer->buff.pdn);
Thomas Bogendoerfer 84fb0b
+	cancel_work_sync(&tracer->read_fw_strings_work);
Thomas Bogendoerfer 84fb0b
 	return err;
Thomas Bogendoerfer 84fb0b
 }
Thomas Bogendoerfer 84fb0b