Commit 9828994a authored by Emeel Hakim's avatar Emeel Hakim Committed by Saeed Mahameed

net/mlx5e: Fix macsec possible null dereference when updating MAC security entity (SecY)

Upon updating MAC security entity (SecY) in hw offload path, the macsec
security association (SA) initialization routine is called. In case of
extended packet number (epn) is enabled the salt and ssci attributes are
retrieved using the MACsec driver rx_sa context which is unavailable when
updating a SecY property such as encoding-sa hence the null dereference.
Fix by using the provided SA to set those attributes.

Fixes: 4411a6c0 ("net/mlx5e: Support MACsec offload extended packet number (EPN)")
Signed-off-by: default avatarEmeel Hakim <ehakim@nvidia.com>
Reviewed-by: default avatarRaed Salem <raeds@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent f5e1ed04
...@@ -359,7 +359,6 @@ static int mlx5e_macsec_init_sa(struct macsec_context *ctx, ...@@ -359,7 +359,6 @@ static int mlx5e_macsec_init_sa(struct macsec_context *ctx,
struct mlx5_core_dev *mdev = priv->mdev; struct mlx5_core_dev *mdev = priv->mdev;
struct mlx5_macsec_obj_attrs obj_attrs; struct mlx5_macsec_obj_attrs obj_attrs;
union mlx5e_macsec_rule *macsec_rule; union mlx5e_macsec_rule *macsec_rule;
struct macsec_key *key;
int err; int err;
obj_attrs.next_pn = sa->next_pn; obj_attrs.next_pn = sa->next_pn;
...@@ -369,13 +368,9 @@ static int mlx5e_macsec_init_sa(struct macsec_context *ctx, ...@@ -369,13 +368,9 @@ static int mlx5e_macsec_init_sa(struct macsec_context *ctx,
obj_attrs.aso_pdn = macsec->aso.pdn; obj_attrs.aso_pdn = macsec->aso.pdn;
obj_attrs.epn_state = sa->epn_state; obj_attrs.epn_state = sa->epn_state;
key = (is_tx) ? &ctx->sa.tx_sa->key : &ctx->sa.rx_sa->key;
if (sa->epn_state.epn_enabled) { if (sa->epn_state.epn_enabled) {
obj_attrs.ssci = (is_tx) ? cpu_to_be32((__force u32)ctx->sa.tx_sa->ssci) : obj_attrs.ssci = cpu_to_be32((__force u32)sa->ssci);
cpu_to_be32((__force u32)ctx->sa.rx_sa->ssci); memcpy(&obj_attrs.salt, &sa->salt, sizeof(sa->salt));
memcpy(&obj_attrs.salt, &key->salt, sizeof(key->salt));
} }
obj_attrs.replay_window = ctx->secy->replay_window; obj_attrs.replay_window = ctx->secy->replay_window;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment