netfilter: nf_tables: return immediately on empty commit
authorFlorian Westphal <fw@strlen.de>
Thu, 7 Mar 2019 22:20:11 +0000 (23:20 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 11 Mar 2019 19:01:20 +0000 (20:01 +0100)
When running 'nft flush ruleset' while no rules exist, we will increment
the generation counter and announce a new genid to userspace, yet
nothing had changed in the first place.

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

index 9d8f51dfc59363266bb81371d0f9f99241c8d1bb..513f931186043f2ded3f1844374decd79768c44b 100644 (file)
@@ -6564,6 +6564,11 @@ static int nf_tables_commit(struct net *net, struct sk_buff *skb)
        struct nft_chain *chain;
        struct nft_table *table;
 
+       if (list_empty(&net->nft.commit_list)) {
+               mutex_unlock(&net->nft.commit_mutex);
+               return 0;
+       }
+
        /* 0. Validate ruleset, otherwise roll back for error reporting. */
        if (nf_tables_validate(net) < 0)
                return -EAGAIN;