netfilter: nf_tables: __nft_expr_type_get() selects specific family type
[ Upstream commit 9cff126f73a7025bcb0883189b2bed90010a57d4 ] In case that there are two types, prefer the family specify extension. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Stable-dep-of: f969eb84ce48 ("netfilter: nf_tables: Fix potential data-race in __nft_expr_type_get()") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
34925d01ba
commit
97f097a809
@ -2081,14 +2081,17 @@ EXPORT_SYMBOL_GPL(nft_unregister_expr);
|
||||
static const struct nft_expr_type *__nft_expr_type_get(u8 family,
|
||||
struct nlattr *nla)
|
||||
{
|
||||
const struct nft_expr_type *type;
|
||||
const struct nft_expr_type *type, *candidate = NULL;
|
||||
|
||||
list_for_each_entry(type, &nf_tables_expressions, list) {
|
||||
if (!nla_strcmp(nla, type->name) &&
|
||||
(!type->family || type->family == family))
|
||||
return type;
|
||||
if (!nla_strcmp(nla, type->name)) {
|
||||
if (!type->family && !candidate)
|
||||
candidate = type;
|
||||
else if (type->family == family)
|
||||
candidate = type;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return candidate;
|
||||
}
|
||||
|
||||
static const struct nft_expr_type *nft_expr_type_get(struct net *net,
|
||||
|
Loading…
x
Reference in New Issue
Block a user