File tree Expand file tree Collapse file tree 1 file changed +11
-0
lines changed
drivers/net/ethernet/mellanox/mlx5/core Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -5266,6 +5266,7 @@ void mlx5e_destroy_q_counters(struct mlx5e_priv *priv)
5266
5266
static int mlx5e_nic_init (struct mlx5_core_dev * mdev ,
5267
5267
struct net_device * netdev )
5268
5268
{
5269
+ const bool take_rtnl = netdev -> reg_state == NETREG_REGISTERED ;
5269
5270
struct mlx5e_priv * priv = netdev_priv (netdev );
5270
5271
struct mlx5e_flow_steering * fs ;
5271
5272
int err ;
@@ -5294,9 +5295,19 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
5294
5295
mlx5_core_err (mdev , "TLS initialization failed, %d\n" , err );
5295
5296
5296
5297
mlx5e_health_create_reporters (priv );
5298
+
5299
+ /* If netdev is already registered (e.g. move from uplink to nic profile),
5300
+ * RTNL lock must be held before triggering netdev notifiers.
5301
+ */
5302
+ if (take_rtnl )
5303
+ rtnl_lock ();
5304
+
5297
5305
/* update XDP supported features */
5298
5306
mlx5e_set_xdp_feature (netdev );
5299
5307
5308
+ if (take_rtnl )
5309
+ rtnl_unlock ();
5310
+
5300
5311
return 0 ;
5301
5312
}
5302
5313
You can’t perform that action at this time.
0 commit comments