Message ID | 20240730061638.1831002-8-tariqt@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 025f2b85a5e5a46df14ecf162c3c80a957a36d0b |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | mlx5 misc fixes 2024-07-30 | expand |
On 30.07.2024 08:16, Tariq Toukan wrote: > From: Chris Mi <cmi@nvidia.com> > > The cited commit allocates a new modify header to replace the old > one when updating CT entry. But if failed to allocate a new one, eg. > exceed the max number firmware can support, modify header will be > an error pointer that will trigger a panic when deallocating it. And > the old modify header point is copied to old attr. When the old > attr is freed, the old modify header is lost. > > Fix it by restoring the old attr to attr when failed to allocate a > new modify header context. So when the CT entry is freed, the right > modify header context will be freed. And the panic of accessing > error pointer is also fixed. > > Fixes: 94ceffb48eac ("net/mlx5e: Implement CT entry update") > Signed-off-by: Chris Mi <cmi@nvidia.com> > Signed-off-by: Tariq Toukan <tariqt@nvidia.com> > --- Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com> > drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c > index 8cf8ba2622f2..71a168746ebe 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c > @@ -932,6 +932,7 @@ mlx5_tc_ct_entry_replace_rule(struct mlx5_tc_ct_priv *ct_priv, > mlx5_tc_ct_entry_destroy_mod_hdr(ct_priv, zone_rule->attr, mh); > mlx5_put_label_mapping(ct_priv, attr->ct_attr.ct_labels_id); > err_mod_hdr: > + *attr = *old_attr; > kfree(old_attr); > err_attr: > kvfree(spec);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 8cf8ba2622f2..71a168746ebe 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -932,6 +932,7 @@ mlx5_tc_ct_entry_replace_rule(struct mlx5_tc_ct_priv *ct_priv, mlx5_tc_ct_entry_destroy_mod_hdr(ct_priv, zone_rule->attr, mh); mlx5_put_label_mapping(ct_priv, attr->ct_attr.ct_labels_id); err_mod_hdr: + *attr = *old_attr; kfree(old_attr); err_attr: kvfree(spec);