]> git.itanic.dy.fi Git - linux-stable/commitdiff
netfilter: nft_dynset: do not reject set updates with NFT_SET_EVAL
authorPablo Neira Ayuso <pablo@netfilter.org>
Sat, 27 May 2023 16:08:08 +0000 (18:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 May 2023 11:38:37 +0000 (12:38 +0100)
215a31f19dedd4e92a67cf5a9717ee898d012b3a ]

NFT_SET_EVAL is signalling the kernel that this sets can be updated from
the evaluation path, even if there are no expressions attached to the
element. Otherwise, set updates with no expressions fail. Update
description to describe the right semantics.

Fixes: 22fe54d5fefc ("netfilter: nf_tables: add support for dynamic set updates")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/uapi/linux/netfilter/nf_tables.h
net/netfilter/nft_dynset.c

index 49b6997c32550dea5a366758b2c759326081bc1e..c7bb18ea4962353787dafcd6eab36940e6074b43 100644 (file)
@@ -258,7 +258,7 @@ enum nft_rule_compat_attributes {
  * @NFT_SET_INTERVAL: set contains intervals
  * @NFT_SET_MAP: set is used as a dictionary
  * @NFT_SET_TIMEOUT: set uses timeouts
- * @NFT_SET_EVAL: set contains expressions for evaluation
+ * @NFT_SET_EVAL: set can be updated from the evaluation path
  * @NFT_SET_OBJECT: set contains stateful objects
  */
 enum nft_set_flags {
index f174a66bbc4b76f0992020639ed5442e7e18b425..d1dc5c8937a5653ab480baadefcc853dad8cce55 100644 (file)
@@ -190,9 +190,7 @@ static int nft_dynset_init(const struct nft_ctx *ctx,
                priv->expr = nft_expr_init(ctx, tb[NFTA_DYNSET_EXPR]);
                if (IS_ERR(priv->expr))
                        return PTR_ERR(priv->expr);
-
-       } else if (set->flags & NFT_SET_EVAL)
-               return -EINVAL;
+       }
 
        nft_set_ext_prepare(&priv->tmpl);
        nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_KEY, set->klen);