nfp: flower-ct: remove callback delete deadlock
authorLouis Peens <louis.peens@corigine.com>
Fri, 2 Jul 2021 09:21:39 +0000 (11:21 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 2 Jul 2021 20:36:35 +0000 (13:36 -0700)
commit7cc93d888df764a13f196e3d4aef38869f7dd217
treee5ee5a43052d2689e19a42fb581ad982f59147d8
parent77ac5e40c44eb78333fbc38482d61fc2af7dda0a
nfp: flower-ct: remove callback delete deadlock

The current location of the callback delete can lead to a race
condition where deleting the callback requires a write_lock on
the nf_table, but at the same time another thread from netfilter
could have taken a read lock on the table before trying to offload.
Since the driver is taking a rtnl_lock this can lead into a deadlock
situation, where the netfilter offload will wait for the cls_flower
rtnl_lock to be released, but this cannot happen since this is
waiting for the nf_table read_lock to be released before it can
delete the callback.

Solve this by completely removing the nf_flow_table_offload_del_cb
call, as this will now be cleaned up by act_ct itself when cleaning
up the specific nf_table.

Fixes: 62268e78145f ("nfp: flower-ct: add nft callback stubs")
Signed-off-by: Louis Peens <louis.peens@corigine.com>
Signed-off-by: Yinjun Zhang <yinjun.zhang@corigine.com>
Signed-off-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/flower/conntrack.c