net/mlx5: Fix sleep while atomic in mlx5_eswitch_get_vepa
authorHuy Nguyen <huyn@mellanox.com>
Mon, 3 Feb 2020 22:32:18 +0000 (16:32 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Feb 2020 16:22:28 +0000 (17:22 +0100)
commitfca1cdd3417e22d8f7be1f4f5d11ff7a4c1d2141
treefcac9f10033599023c8884d7aa47a545184b9d6a
parent06320052ee693a7a049bfbcf42d209da48f10982
net/mlx5: Fix sleep while atomic in mlx5_eswitch_get_vepa

commit 3d9c5e023a0dbf3e117bb416cfefd9405bf5af0c upstream.

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: 8da202b24913 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c