From: Jiri Pirko Date: Fri, 2 Jun 2023 13:51:42 +0000 (+0200) Subject: net/mlx5: Move state lock taking into mlx5_sf_dealloc() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=9497036dfbb8db1fda3915ae72f35db161f09e59;p=linux.git net/mlx5: Move state lock taking into mlx5_sf_dealloc() Instead of taking lock and calling mlx5_sf_dealloc(), move the lock taking into mlx5_sf_dealloc(). The other caller of mlx5_sf_dealloc() does not need it now, but will need it after a follow-up patch removing the table reference counting. Signed-off-by: Jiri Pirko Reviewed-by: Shay Drory Signed-off-by: Saeed Mahameed --- diff --git a/drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c index 78cdfe595a019..bed3fe8759d2b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c @@ -341,6 +341,8 @@ int mlx5_devlink_sf_port_new(struct devlink *devlink, static void mlx5_sf_dealloc(struct mlx5_sf_table *table, struct mlx5_sf *sf) { + mutex_lock(&table->sf_state_lock); + mlx5_sf_function_id_erase(table, sf); if (sf->hw_state == MLX5_VHCA_STATE_ALLOCATED) { @@ -358,6 +360,8 @@ static void mlx5_sf_dealloc(struct mlx5_sf_table *table, struct mlx5_sf *sf) mlx5_sf_hw_table_sf_deferred_free(table->dev, sf->controller, sf->id); kfree(sf); } + + mutex_unlock(&table->sf_state_lock); } int mlx5_devlink_sf_port_del(struct devlink *devlink, @@ -377,10 +381,7 @@ int mlx5_devlink_sf_port_del(struct devlink *devlink, } mlx5_eswitch_unload_sf_vport(esw, sf->hw_fn_id); - - mutex_lock(&table->sf_state_lock); mlx5_sf_dealloc(table, sf); - mutex_unlock(&table->sf_state_lock); mlx5_sf_table_put(table); return 0; }