Patch "net/mlx5: Fix bridge mode operations when there are no VFs" has been added to the 6.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net/mlx5: Fix bridge mode operations when there are no VFs

to the 6.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-mlx5-fix-bridge-mode-operations-when-there-are-n.patch
and it can be found in the queue-6.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3b0962b60e0e852afbba0170e103ae0a89624d27
Author: Benjamin Poirier <bpoirier@xxxxxxxxxx>
Date:   Fri Aug 30 08:39:27 2024 -0400

    net/mlx5: Fix bridge mode operations when there are no VFs
    
    [ Upstream commit b1d305abef4640af1b4f1b4774d513cd81b10cfc ]
    
    Currently, trying to set the bridge mode attribute when numvfs=0 leads to a
    crash:
    
    bridge link set dev eth2 hwmode vepa
    
    [  168.967392] BUG: kernel NULL pointer dereference, address: 0000000000000030
    [...]
    [  168.969989] RIP: 0010:mlx5_add_flow_rules+0x1f/0x300 [mlx5_core]
    [...]
    [  168.976037] Call Trace:
    [  168.976188]  <TASK>
    [  168.978620]  _mlx5_eswitch_set_vepa_locked+0x113/0x230 [mlx5_core]
    [  168.979074]  mlx5_eswitch_set_vepa+0x7f/0xa0 [mlx5_core]
    [  168.979471]  rtnl_bridge_setlink+0xe9/0x1f0
    [  168.979714]  rtnetlink_rcv_msg+0x159/0x400
    [  168.980451]  netlink_rcv_skb+0x54/0x100
    [  168.980675]  netlink_unicast+0x241/0x360
    [  168.980918]  netlink_sendmsg+0x1f6/0x430
    [  168.981162]  ____sys_sendmsg+0x3bb/0x3f0
    [  168.982155]  ___sys_sendmsg+0x88/0xd0
    [  168.985036]  __sys_sendmsg+0x59/0xa0
    [  168.985477]  do_syscall_64+0x79/0x150
    [  168.987273]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  168.987773] RIP: 0033:0x7f8f7950f917
    
    (esw->fdb_table.legacy.vepa_fdb is null)
    
    The bridge mode is only relevant when there are multiple functions per
    port. Therefore, prevent setting and getting this setting when there are no
    VFs.
    
    Note that after this change, there are no settings to change on the PF
    interface using `bridge link` when there are no VFs, so the interface no
    longer appears in the `bridge link` output.
    
    Fixes: 4b89251de024 ("net/mlx5: Support ndo bridge_setlink and getlink")
    Signed-off-by: Benjamin Poirier <bpoirier@xxxxxxxxxx>
    Reviewed-by: Cosmin Ratiu <cratiu@xxxxxxxxxx>
    Signed-off-by: Saeed Mahameed <saeedm@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c b/drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c
index 255bc8b749f9..8587cd572da5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c
@@ -319,7 +319,7 @@ int mlx5_eswitch_set_vepa(struct mlx5_eswitch *esw, u8 setting)
 		return -EPERM;
 
 	mutex_lock(&esw->state_lock);
-	if (esw->mode != MLX5_ESWITCH_LEGACY) {
+	if (esw->mode != MLX5_ESWITCH_LEGACY || !mlx5_esw_is_fdb_created(esw)) {
 		err = -EOPNOTSUPP;
 		goto out;
 	}
@@ -339,7 +339,7 @@ int mlx5_eswitch_get_vepa(struct mlx5_eswitch *esw, u8 *setting)
 	if (!mlx5_esw_allowed(esw))
 		return -EPERM;
 
-	if (esw->mode != MLX5_ESWITCH_LEGACY)
+	if (esw->mode != MLX5_ESWITCH_LEGACY || !mlx5_esw_is_fdb_created(esw))
 		return -EOPNOTSUPP;
 
 	*setting = esw->fdb_table.legacy.vepa_uplink_rule ? 1 : 0;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux