netfilter: nf_tables: replace unnecessary use of list_for_each_entry_continue()
authorJakob Koschel <jakobkoschel@gmail.com>
Tue, 22 Mar 2022 10:56:44 +0000 (11:56 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 5 Apr 2022 10:35:58 +0000 (12:35 +0200)
Since there is no way for list_for_each_entry_continue() to start
interating in the middle of the list they can be replaced with a call
to list_for_each_entry().

In preparation to limit the scope of the list iterator to the list
traversal loop, the list iterator variable 'rule' should not be used
past the loop.

v1->v2:
- also replace first usage of list_for_each_entry_continue() (Florian
Westphal)

Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com>
Reviewed-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c

index 5ddfdb2..060aa56 100644 (file)
@@ -8367,10 +8367,8 @@ static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *cha
        if (chain->blob_next || !nft_is_active_next(net, chain))
                return 0;
 
-       rule = list_entry(&chain->rules, struct nft_rule, list);
-
        data_size = 0;
-       list_for_each_entry_continue(rule, &chain->rules, list) {
+       list_for_each_entry(rule, &chain->rules, list) {
                if (nft_is_active_next(net, rule)) {
                        data_size += sizeof(*prule) + rule->dlen;
                        if (data_size > INT_MAX)
@@ -8387,7 +8385,7 @@ static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *cha
        data_boundary = data + data_size;
        size = 0;
 
-       list_for_each_entry_continue(rule, &chain->rules, list) {
+       list_for_each_entry(rule, &chain->rules, list) {
                if (!nft_is_active_next(net, rule))
                        continue;