netfilter: nf_tables: pass set description to ->privsize
The new non-resizable hashtable variant needs this to calculate the size of the bucket array. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
2b664957c2
commit
347b408d59
|
@ -351,7 +351,8 @@ struct nft_set_ops {
|
|||
struct nft_set *set,
|
||||
struct nft_set_iter *iter);
|
||||
|
||||
unsigned int (*privsize)(const struct nlattr * const nla[]);
|
||||
unsigned int (*privsize)(const struct nlattr * const nla[],
|
||||
const struct nft_set_desc *desc);
|
||||
bool (*estimate)(const struct nft_set_desc *desc,
|
||||
u32 features,
|
||||
struct nft_set_estimate *est);
|
||||
|
|
|
@ -3052,7 +3052,7 @@ static int nf_tables_newset(struct net *net, struct sock *nlsk,
|
|||
|
||||
size = 0;
|
||||
if (ops->privsize != NULL)
|
||||
size = ops->privsize(nla);
|
||||
size = ops->privsize(nla, &desc);
|
||||
|
||||
err = -ENOMEM;
|
||||
set = kzalloc(sizeof(*set) + size + udlen, GFP_KERNEL);
|
||||
|
|
|
@ -236,7 +236,8 @@ static inline u32 nft_bitmap_total_size(u32 klen)
|
|||
return sizeof(struct nft_bitmap) + nft_bitmap_size(klen);
|
||||
}
|
||||
|
||||
static unsigned int nft_bitmap_privsize(const struct nlattr * const nla[])
|
||||
static unsigned int nft_bitmap_privsize(const struct nlattr * const nla[],
|
||||
const struct nft_set_desc *desc)
|
||||
{
|
||||
u32 klen = ntohl(nla_get_be32(nla[NFTA_SET_KEY_LEN]));
|
||||
|
||||
|
|
|
@ -321,7 +321,8 @@ static void nft_rhash_gc(struct work_struct *work)
|
|||
nft_set_gc_interval(set));
|
||||
}
|
||||
|
||||
static unsigned int nft_rhash_privsize(const struct nlattr * const nla[])
|
||||
static unsigned int nft_rhash_privsize(const struct nlattr * const nla[],
|
||||
const struct nft_set_desc *desc)
|
||||
{
|
||||
return sizeof(struct nft_rhash);
|
||||
}
|
||||
|
|
|
@ -251,7 +251,8 @@ static void nft_rbtree_walk(const struct nft_ctx *ctx,
|
|||
read_unlock_bh(&priv->lock);
|
||||
}
|
||||
|
||||
static unsigned int nft_rbtree_privsize(const struct nlattr * const nla[])
|
||||
static unsigned int nft_rbtree_privsize(const struct nlattr * const nla[],
|
||||
const struct nft_set_desc *desc)
|
||||
{
|
||||
return sizeof(struct nft_rbtree);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue