Unverified Commit bf2653a2 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!12062 CVE-2024-46857

Merge Pull Request from: @ci-robot 
 
PR sync from: Zhang Changzhong <zhangchangzhong@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/IJNLZMWMIRPSPYCZCO7PT5ICXGGSRU4G/ 
Benjamin Poirier (1):

Chris Mi (1):
  net/mlx5: E-switch, Introduce flag to indicate if fdb table is created


-- 
2.9.5
 
https://gitee.com/src-openeuler/kernel/issues/IAU9OW 
 
Link:https://gitee.com/openeuler/kernel/pulls/12062

 

Reviewed-by: default avatarYue Haibing <yuehaibing@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
parents c9c7afae efcce449
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1630,6 +1630,8 @@ int mlx5_eswitch_enable_locked(struct mlx5_eswitch *esw, int mode, int num_vfs)
	if (err)
		goto abort;

	esw->fdb_table.flags |= MLX5_ESW_FDB_CREATED;

	mlx5_eswitch_event_handlers_register(esw);

	esw_info(esw->dev, "Enable: mode(%s), nvfs(%d), active vports(%d)\n",
@@ -1695,6 +1697,7 @@ void mlx5_eswitch_disable_locked(struct mlx5_eswitch *esw, bool clear_vf)

	mlx5_eswitch_event_handlers_unregister(esw);

	esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED;
	if (esw->mode == MLX5_ESWITCH_LEGACY)
		esw_legacy_disable(esw);
	else if (esw->mode == MLX5_ESWITCH_OFFLOADS)
@@ -2174,7 +2177,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;
	}
@@ -2194,7 +2197,7 @@ int mlx5_eswitch_get_vepa(struct mlx5_eswitch *esw, u8 *setting)
	if (!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;
+9 −0
Original line number Diff line number Diff line
@@ -241,6 +241,10 @@ enum {
	MLX5_ESWITCH_REG_C1_LOOPBACK_ENABLED = BIT(1),
};

enum {
	MLX5_ESW_FDB_CREATED = BIT(0),
};

struct mlx5_eswitch {
	struct mlx5_core_dev    *dev;
	struct mlx5_nb          nb;
@@ -556,6 +560,11 @@ mlx5_esw_devlink_port_index_to_vport_num(unsigned int dl_port_index)
	return dl_port_index & 0xffff;
}

static inline bool mlx5_esw_is_fdb_created(struct mlx5_eswitch *esw)
{
	return esw->fdb_table.flags & MLX5_ESW_FDB_CREATED;
}

/* TODO: This mlx5e_tc function shouldn't be called by eswitch */
void mlx5e_tc_clean_fdb_peer_flows(struct mlx5_eswitch *esw);