RE: [PATCH net] net/mlx5: Don't skip subfunction cleanup in case of error in module init
From: Parav Pandit <hidden>
Date: 2021-08-03 02:58:14
From: Leon Romanovsky <leon@kernel.org> Sent: Monday, August 2, 2021 7:10 PM
quoted hunk ↗ jump to hunk
From: Leon Romanovsky <leonro@nvidia.com> Clean SF resources if mlx5 eth failed to initialize. Fixes: 1958fc2f0712 ("net/mlx5: SF, Add auxiliary device driver") Signed-off-by: Leon Romanovsky <leonro@nvidia.com> --- drivers/net/ethernet/mellanox/mlx5/core/main.c | 12 ++++-------- drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h | 5 +++++ 2 files changed, 9 insertions(+), 8 deletions(-)diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.cb/drivers/net/ethernet/mellanox/mlx5/core/main.c index eb1b316560a8..c84ad87c99bb 100644--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c@@ -1784,16 +1784,14 @@ static int __init init(void) if (err) goto err_sf; -#ifdef CONFIG_MLX5_CORE_EN err = mlx5e_init(); - if (err) { - pci_unregister_driver(&mlx5_core_driver); - goto err_debug; - } -#endif + if (err) + goto err_en; return 0; +err_en: + mlx5_sf_driver_unregister(); err_sf: pci_unregister_driver(&mlx5_core_driver); err_debug:@@ -1803,9 +1801,7 @@ static int __init init(void) static void __exit cleanup(void) { -#ifdef CONFIG_MLX5_CORE_EN mlx5e_cleanup(); -#endif mlx5_sf_driver_unregister(); pci_unregister_driver(&mlx5_core_driver); mlx5_unregister_debugfs();diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.hb/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h index 343807ac2036..da365b8f0141 100644--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h@@ -206,8 +206,13 @@ int mlx5_firmware_flash(struct mlx5_core_dev*dev, const struct firmware *fw, int mlx5_fw_version_query(struct mlx5_core_dev *dev, u32 *running_ver, u32 *stored_ver); +#ifdef CONFIG_MLX5_CORE_EN int mlx5e_init(void); void mlx5e_cleanup(void); +#else +static inline int mlx5e_init(void){ return 0; } static inline void +mlx5e_cleanup(void){} #endif
mlx5e_*() functionality is provided by core/en.h and core/en_main.c So above declaration should come from en_main.h, instead of mlx5_core.h, but we don't have en_main.h currently. Including en.h is too much given rest of the other declarations in it. So for net fix, this is ok, for net-next en.h should be improved and above declaration should move to en_main.h. Reviewed-by: Parav Pandit <redacted>