netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saeed Mahameed <saeed@kernel.org>
To: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>
Cc: netdev@vger.kernel.org, Roi Dayan <roid@nvidia.com>,
	Paul Blakey <paulb@nvidia.com>,
	Saeed Mahameed <saeedm@nvidia.com>
Subject: [net-next 07/15] net/mlx5e: CT, Avoid false lock dependency warning
Date: Thu, 11 Mar 2021 14:37:15 -0800	[thread overview]
Message-ID: <20210311223723.361301-8-saeed@kernel.org> (raw)
In-Reply-To: <20210311223723.361301-1-saeed@kernel.org>

From: Roi Dayan <roid@nvidia.com>

To avoid false lock dependency warning set the ct_entries_ht lock
class different than the lock class of the ht being used when deleting
last flow from a group and then deleting a group, we get into del_sw_flow_group()
which call rhashtable_destroy on fg->ftes_hash which will take ht->mutex but
it's different than the ht->mutex here.

======================================================
WARNING: possible circular locking dependency detected
5.10.0-rc2+ #8 Tainted: G           O
------------------------------------------------------
revalidator23/24009 is trying to acquire lock:
ffff888128d83828 (&node->lock){++++}-{3:3}, at: mlx5_del_flow_rules+0x83/0x7a0 [mlx5_core]

but task is already holding lock:
ffff8881081ef518 (&ht->mutex){+.+.}-{3:3}, at: rhashtable_free_and_destroy+0x37/0x720

which lock already depends on the new lock.

Signed-off-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Paul Blakey <paulb@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

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 f3f6eb081948..f81da2dc6af1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
@@ -1539,6 +1539,14 @@ mlx5_tc_ct_free_pre_ct_tables(struct mlx5_ct_ft *ft)
 	mlx5_tc_ct_free_pre_ct(ft, &ft->pre_ct);
 }
 
+/* To avoid false lock dependency warning set the ct_entries_ht lock
+ * class different than the lock class of the ht being used when deleting
+ * last flow from a group and then deleting a group, we get into del_sw_flow_group()
+ * which call rhashtable_destroy on fg->ftes_hash which will take ht->mutex but
+ * it's different than the ht->mutex here.
+ */
+static struct lock_class_key ct_entries_ht_lock_key;
+
 static struct mlx5_ct_ft *
 mlx5_tc_ct_add_ft_cb(struct mlx5_tc_ct_priv *ct_priv, u16 zone,
 		     struct nf_flowtable *nf_ft)
@@ -1573,6 +1581,8 @@ mlx5_tc_ct_add_ft_cb(struct mlx5_tc_ct_priv *ct_priv, u16 zone,
 	if (err)
 		goto err_init;
 
+	lockdep_set_class(&ft->ct_entries_ht.mutex, &ct_entries_ht_lock_key);
+
 	err = rhashtable_insert_fast(&ct_priv->zone_ht, &ft->node,
 				     zone_params);
 	if (err)
-- 
2.29.2


  parent reply	other threads:[~2021-03-11 22:38 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-11 22:37 [pull request][net-next 00/15] mlx5 updates 2021-03-11 Saeed Mahameed
2021-03-11 22:37 ` [net-next 01/15] net/mlx5: Don't skip vport check Saeed Mahameed
2021-03-12  0:30   ` patchwork-bot+netdevbpf
2021-03-11 22:37 ` [net-next 02/15] net/mlx5: Remove impossible checks of interface state Saeed Mahameed
2021-03-11 22:37 ` [net-next 03/15] net/mlx5: Separate probe vs. reload flows Saeed Mahameed
2021-03-11 22:37 ` [net-next 04/15] net/mlx5: Remove second FW tracer check Saeed Mahameed
2021-03-11 22:37 ` [net-next 05/15] net/mlx5: Don't rely on interface state bit Saeed Mahameed
2021-03-11 22:37 ` [net-next 06/15] net/mlx5: Check returned value from health recover sequence Saeed Mahameed
2021-03-11 22:37 ` Saeed Mahameed [this message]
2021-03-11 22:37 ` [net-next 08/15] net/mlx5e: fix mlx5e_tc_tun_update_header_ipv6 dummy definition Saeed Mahameed
2021-03-11 22:37 ` [net-next 09/15] net/mlx5e: Add missing include Saeed Mahameed
2021-03-11 22:37 ` [net-next 10/15] net/mlx5: Fix indir stable stubs Saeed Mahameed
2021-03-11 22:37 ` [net-next 11/15] net/mlx5e: mlx5_tc_ct_init does not fail Saeed Mahameed
2021-03-11 22:37 ` [net-next 12/15] net/mlx5: SF, Fix return type Saeed Mahameed
2021-03-11 22:37 ` [net-next 13/15] net/mlx5e: rep: Improve reg_cX conditions Saeed Mahameed
2021-03-11 22:37 ` [net-next 14/15] net/mlx5: Avoid unnecessary operation Saeed Mahameed
2021-03-11 22:37 ` [net-next 15/15] net/mlx5e: Alloc flow spec using kvzalloc instead of kzalloc Saeed Mahameed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210311223723.361301-8-saeed@kernel.org \
    --to=saeed@kernel.org \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=paulb@nvidia.com \
    --cc=roid@nvidia.com \
    --cc=saeedm@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).