netfilter: nf_tables: set last expression in register tracking area
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 12 Jan 2022 11:29:05 +0000 (12:29 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 12 Jan 2022 11:30:29 +0000 (12:30 +0100)
nft_rule_for_each_expr() sets on last to nft_rule_last(), however, this
is coming after track.last field is set on.

Use nft_expr_last() to set track.last accordingly.

Fixes: 12e4ecfa244b ("netfilter: nf_tables: add register tracking infrastructure")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c

index 1cde8cd..cf454f8 100644 (file)
@@ -8299,7 +8299,7 @@ static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *cha
                        return -ENOMEM;
 
                size = 0;
-               track.last = last;
+               track.last = nft_expr_last(rule);
                nft_rule_for_each_expr(expr, last, rule) {
                        track.cur = expr;