From: Yevgeny Kliteynik <kliteyn@nvidia.com>
Date: Wed, 29 Sep 2021 15:36:32 +0300
Subject: net/mlx5: DR, Warn on failure to destroy objects due to refcount
Patch-mainline: v5.17-rc1
Git-commit: b54128275ef86dd699fcb23d7e6df21f251dc038
References: jsc#PED-1549
Add WARN_ON_ONCE on refcount checks in SW steering object destructors
Signed-off-by: Paul Blakey <paulb@nvidia.com>
Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_table.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c
@@ -1792,7 +1792,7 @@ mlx5dr_action_create_dest_vport(struct m
int mlx5dr_action_destroy(struct mlx5dr_action *action)
{
- if (refcount_read(&action->refcount) > 1)
+ if (WARN_ON_ONCE(refcount_read(&action->refcount) > 1))
return -EBUSY;
switch (action->action_type) {
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c
@@ -431,7 +431,7 @@ int mlx5dr_domain_sync(struct mlx5dr_dom
int mlx5dr_domain_destroy(struct mlx5dr_domain *dmn)
{
- if (refcount_read(&dmn->refcount) > 1)
+ if (WARN_ON_ONCE(refcount_read(&dmn->refcount) > 1))
return -EBUSY;
/* make sure resources are not used by the hardware */
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c
@@ -1069,7 +1069,7 @@ int mlx5dr_matcher_destroy(struct mlx5dr
{
struct mlx5dr_table *tbl = matcher->tbl;
- if (refcount_read(&matcher->refcount) > 1)
+ if (WARN_ON_ONCE(refcount_read(&matcher->refcount) > 1))
return -EBUSY;
mlx5dr_domain_lock(tbl->dmn);
--- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_table.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_table.c
@@ -283,7 +283,7 @@ int mlx5dr_table_destroy(struct mlx5dr_t
{
int ret;
- if (refcount_read(&tbl->refcount) > 1)
+ if (WARN_ON_ONCE(refcount_read(&tbl->refcount) > 1))
return -EBUSY;
mlx5dr_dbg_tbl_del(tbl);