diff options
author | Pablo Neira Ayuso <[email protected]> | 2021-03-17 21:19:57 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <[email protected]> | 2021-03-18 01:08:54 +0100 |
commit | 86fe2c19eec4728fd9a42ba18f3b47f0d5f9fd7c (patch) | |
tree | d543aaa2ed1ade3a860e2d118ba1e7c57f5a7919 | |
parent | 740b486a8d1f966e68ac0666f1fd57441a7cda94 (diff) |
netfilter: nftables: skip hook overlap logic if flowtable is stale
If the flowtable has been previously removed in this batch, skip the
hook overlap checks. This fixes spurious EEXIST errors when removing and
adding the flowtable in the same batch.
Signed-off-by: Pablo Neira Ayuso <[email protected]>
-rw-r--r-- | net/netfilter/nf_tables_api.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index 4fcd07f1e925..f57f1a6ba96f 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -6783,6 +6783,9 @@ static int nft_register_flowtable_net_hooks(struct net *net, list_for_each_entry(hook, hook_list, list) { list_for_each_entry(ft, &table->flowtables, list) { + if (!nft_is_active_next(net, ft)) + continue; + list_for_each_entry(hook2, &ft->hook_list, list) { if (hook->ops.dev == hook2->ops.dev && hook->ops.pf == hook2->ops.pf) { |