without this followup fix to recent commit jumps are evaluated like gotos due to bogus restore of rule head. We need to store not the rule, but the next rule location in the current-generation rules array. Fixes: 5f861203063fd ("netfilter: nf_tables: remove synchronize_rcu in commit phase") Signed-off-by: Florian Westphal <fw@xxxxxxxxx> Please consider squashing this. --- net/netfilter/nf_tables_core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/netfilter/nf_tables_core.c b/net/netfilter/nf_tables_core.c index c3315aa855f8..03dce8ff6f0d 100644 --- a/net/netfilter/nf_tables_core.c +++ b/net/netfilter/nf_tables_core.c @@ -133,7 +133,7 @@ static noinline void nft_update_chain_stats(const struct nft_chain *chain, struct nft_jumpstack { const struct nft_chain *chain; - const struct nft_rule *rule; + struct nft_rule *const *rules; }; unsigned int @@ -141,7 +141,7 @@ nft_do_chain(struct nft_pktinfo *pkt, void *priv) { const struct nft_chain *chain = priv, *basechain = chain; const struct net *net = nft_net(pkt); - struct nft_rule **rules; + struct nft_rule *const *rules; const struct nft_rule *rule; const struct nft_expr *expr, *last; struct nft_regs regs; @@ -159,8 +159,8 @@ nft_do_chain(struct nft_pktinfo *pkt, void *priv) else rules = rcu_dereference(chain->rules_gen_0); - rule = *rules; next_rule: + rule = *rules; regs.verdict.code = NFT_CONTINUE; for (; *rules ; rules++) { rule = *rules; @@ -201,7 +201,7 @@ nft_do_chain(struct nft_pktinfo *pkt, void *priv) case NFT_JUMP: BUG_ON(stackptr >= NFT_JUMP_STACK_SIZE); jumpstack[stackptr].chain = chain; - jumpstack[stackptr].rule = rule; + jumpstack[stackptr].rules = rules + 1; stackptr++; /* fall through */ case NFT_GOTO: @@ -223,7 +223,7 @@ nft_do_chain(struct nft_pktinfo *pkt, void *priv) if (stackptr > 0) { stackptr--; chain = jumpstack[stackptr].chain; - rule = jumpstack[stackptr].rule; + rules = jumpstack[stackptr].rules; goto next_rule; } -- 2.16.1 -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html