forked from Minki/linux
net/mlx5e: CT, Avoid false lock dependency warning
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>
This commit is contained in:
parent
fe06992b04
commit
76e68d950a
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user