aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2019-11-04 14:52:42 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2019-11-04 20:58:36 +0100
commit88c749840dff58e7a40e18bf9bdace15f27ef259 (patch)
tree9082fe9bb89199d7911246adfdc570cdd64a35b1 /net
parentnetfilter: nf_tables: bogus EOPNOTSUPP on basechain update (diff)
downloadlinux-dev-88c749840dff58e7a40e18bf9bdace15f27ef259.tar.xz
linux-dev-88c749840dff58e7a40e18bf9bdace15f27ef259.zip
netfilter: nf_tables_offload: skip EBUSY on chain update
Do not try to bind a chain again if it exists, otherwise the driver returns EBUSY. Fixes: c9626a2cbdb2 ("netfilter: nf_tables: add hardware offload support") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net')
-rw-r--r--net/netfilter/nf_tables_offload.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
index ad783f4840ef..e25dab8128db 100644
--- a/net/netfilter/nf_tables_offload.c
+++ b/net/netfilter/nf_tables_offload.c
@@ -334,7 +334,8 @@ int nft_flow_rule_offload_commit(struct net *net)
switch (trans->msg_type) {
case NFT_MSG_NEWCHAIN:
- if (!(trans->ctx.chain->flags & NFT_CHAIN_HW_OFFLOAD))
+ if (!(trans->ctx.chain->flags & NFT_CHAIN_HW_OFFLOAD) ||
+ nft_trans_chain_update(trans))
continue;
policy = nft_trans_chain_policy(trans);