mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 00:21:17 +00:00
net/mlx5: Fix sleep while atomic in mlx5_eswitch_get_vepa
rtnl_bridge_getlink is protected by rcu lock, so mlx5_eswitch_get_vepa
cannot take mutex lock. Two possible issues can happen:
1. User at the same time change vepa mode via RTM_SETLINK command.
2. User at the same time change the switchdev mode via devlink netlink
interface.
Case 1 cannot happen because rtnl executes one message in order.
Case 2 can happen but we do not expect user to change the switchdev mode
when changing vepa. Even if a user does it, so he will read a value
which is no longer valid.
Fixes: 8da202b249
("net/mlx5: E-Switch, Add support for VEPA in legacy mode.")
Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
9facfdb546
commit
3d9c5e023a
1 changed files with 3 additions and 11 deletions
|
@ -2452,25 +2452,17 @@ out:
|
||||||
|
|
||||||
int mlx5_eswitch_get_vepa(struct mlx5_eswitch *esw, u8 *setting)
|
int mlx5_eswitch_get_vepa(struct mlx5_eswitch *esw, u8 *setting)
|
||||||
{
|
{
|
||||||
int err = 0;
|
|
||||||
|
|
||||||
if (!esw)
|
if (!esw)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (!ESW_ALLOWED(esw))
|
if (!ESW_ALLOWED(esw))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
mutex_lock(&esw->state_lock);
|
if (esw->mode != MLX5_ESWITCH_LEGACY)
|
||||||
if (esw->mode != MLX5_ESWITCH_LEGACY) {
|
return -EOPNOTSUPP;
|
||||||
err = -EOPNOTSUPP;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
*setting = esw->fdb_table.legacy.vepa_uplink_rule ? 1 : 0;
|
*setting = esw->fdb_table.legacy.vepa_uplink_rule ? 1 : 0;
|
||||||
|
return 0;
|
||||||
out:
|
|
||||||
mutex_unlock(&esw->state_lock);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mlx5_eswitch_set_vport_trust(struct mlx5_eswitch *esw,
|
int mlx5_eswitch_set_vport_trust(struct mlx5_eswitch *esw,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue