netfilter: nft_dynset: report EOPNOTSUPP on missing set feature
commit5.4-rM2-2.2.x-imx-squashed95cd4bca7b
upstream. If userspace requests a feature which is not available the original set definition, then bail out with EOPNOTSUPP. If userspace sends unsupported dynset flags (new feature not supported by this kernel), then report EOPNOTSUPP to userspace. EINVAL should be only used to report malformed netlink messages from userspace. Fixes:22fe54d5fe
("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>
parent
5e401ea716
commit
a798b367a0
|
@ -146,7 +146,7 @@ static int nft_dynset_init(const struct nft_ctx *ctx,
|
|||
u32 flags = ntohl(nla_get_be32(tb[NFTA_DYNSET_FLAGS]));
|
||||
|
||||
if (flags & ~NFT_DYNSET_F_INV)
|
||||
return -EINVAL;
|
||||
return -EOPNOTSUPP;
|
||||
if (flags & NFT_DYNSET_F_INV)
|
||||
priv->invert = true;
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ static int nft_dynset_init(const struct nft_ctx *ctx,
|
|||
timeout = 0;
|
||||
if (tb[NFTA_DYNSET_TIMEOUT] != NULL) {
|
||||
if (!(set->flags & NFT_SET_TIMEOUT))
|
||||
return -EINVAL;
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
err = nf_msecs_to_jiffies64(tb[NFTA_DYNSET_TIMEOUT], &timeout);
|
||||
if (err)
|
||||
|
@ -193,7 +193,7 @@ static int nft_dynset_init(const struct nft_ctx *ctx,
|
|||
|
||||
if (tb[NFTA_DYNSET_SREG_DATA] != NULL) {
|
||||
if (!(set->flags & NFT_SET_MAP))
|
||||
return -EINVAL;
|
||||
return -EOPNOTSUPP;
|
||||
if (set->dtype == NFT_DATA_VERDICT)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
|
|
Loading…
Reference in New Issue