netfilter: nf_tables: bail out if stateful expression provides no .clone

All existing NFT_EXPR_STATEFUL provide a .clone interface, remove
fallback to copy content of stateful expression since this is never
exercised and bail out if .clone interface is not defined.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
Pablo Neira Ayuso 2024-01-07 23:00:15 +01:00
parent 65b3bd600e
commit 3c13725f43
1 changed files with 7 additions and 8 deletions

View File

@ -3274,14 +3274,13 @@ int nft_expr_clone(struct nft_expr *dst, struct nft_expr *src)
{
int err;
if (src->ops->clone) {
dst->ops = src->ops;
err = src->ops->clone(dst, src);
if (err < 0)
return err;
} else {
memcpy(dst, src, src->ops->size);
}
if (WARN_ON_ONCE(!src->ops->clone))
return -EINVAL;
dst->ops = src->ops;
err = src->ops->clone(dst, src);
if (err < 0)
return err;
__module_get(src->ops->type->owner);